了解 Python 守护线程

2024-02-18

我显然误解了有关 Python Thread 对象的守护进程属性的一些基本知识。

考虑以下:

daemonic.py

import sys, threading, time

class TestThread(threading.Thread):
    def __init__(self, daemon):
        threading.Thread.__init__(self)
        self.daemon = daemon

    def run(self):
        x = 0
        while 1:
            if self.daemon:
                print "Daemon :: %s" % x
            else:
                print "Non-Daemon :: %s" % x
            x += 1
            time.sleep(1)

if __name__ == "__main__":
    print "__main__ start"
    if sys.argv[1] == "daemonic":
        thread = TestThread(True)
    else:
        thread = TestThread(False)
    thread.start()
    time.sleep(5)
    print "__main__ stop"

来自 python 文档:

整个Python程序退出时 没有剩余任何活动的非守护线程。

因此,如果我使用 TestThread 作为守护进程运行,我希望它在主线程完成后退出。但这不会发生:

> python daemonic.py daemonic
__main__ start
Daemon :: 0
Daemon :: 1
Daemon :: 2
Daemon :: 3
Daemon :: 4
__main__ stop
Daemon :: 5
Daemon :: 6
^C

我没有得到什么?


正如 Justin 和 Brent 所猜测的,我正在使用 Python 2.5 运行。刚回到家并在我自己的运行 2.7 的机器上进行了尝试,一切正常。感谢您的帮助!


您对守护线程的理解should做是正确的。

至于为什么没有发生这种情况,我猜你正在使用旧版本的Python。 Python 2.5.4 文档包括setDaemon(daemonic)函数,以及isDaemon()检查线程是否是守护线程。 2.6 文档将这些替换为可直接修改的daemon flag.

参考:

http://docs.python.org/release/2.5.4/ http://docs.python.org/release/2.5.4/ (no daemon提到的成员)

http://docs.python.org/release/2.6/library/threading.html http://docs.python.org/release/2.6/library/threading.html(包括daemon member)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 Python 守护线程 的相关文章

随机推荐

  • createReadStream 内的 Nodejs 异步等待

    我正在逐行读取 CSV 文件并在 MongoDB 中插入 更新 预期输出将是 1 console log 行 2 console log 光标 3 console log 流 但得到的输出像 1 console log 行 控制台 log
  • 使用 Boost.Spirit 在 C++ 中解析 SQL 查询

    我创建了一个数据库引擎 可以在其中创建和修改表 并将它们添加到数据库中 为了解析 SQL 查询 我使用 EBNF 形式实现了 Boost Spirit 库 我正确设置了解析器 它成功解析了每条规则 我的问题是我现在不知道如何将两者整合起来
  • android - 从其唯一整数获取资源(字符串)

    我想做以下事情 我想做一个非常简单的画廊应用程序 所以我想选择图像的路径并将其设置为资源 我在 String xml 中设置它 所以我有另一个类 它需要选定的路径来加载其中的所有图像 class ImageHolder public Ima
  • 如何在Hadoop中设置数据块大小?改变它有好处吗?

    如果我们可以更改 Hadoop 中的数据块大小 请告诉我如何操作 更改块大小是否有利 如果是 请告诉我为什么以及如何更改 如果没有 请告诉我为什么以及如何 您可以随时更改块大小 除非dfs blocksize参数在 hdfs site xm
  • 如何在 JavaScript 中获取数组特定索引处的值?

    我有一个数组 只想获取索引 1 处的元素 var myValues new Array var valueAtIndex1 myValues getValue 1 something like this 如何在 JavaScript 中获取
  • 在终端中构建 Xcode 项目 - 选择另一个 Xcode

    我在同一台 Mac 上安装了两个不同的 Xcode 版本 Xcode 4 和 Xcode 5 Xcode 4 位于应用程序文件夹中 因此 每当我从终端构建任何项目时 它自然会使用 Xcode 4 进行编译 有没有办法使用 Xcode 5 位
  • 在 VS 2008 中构建 Proxy/Stub dll

    我有一个 ATL COM 项目从 VC6 迁移到 VS 2008 如何在 VS2008 上构建 PS DLL VS 2008 中的新 ATL 项目有一个单独的 PS 项目 用于构建 PS DLL 但从VC6迁移并没有创建这个项目 我尝试在
  • 如何让我的 flutter 应用程序在关闭时在后台运行?

    我正在构建一个应用程序 我希望它显示在用户的通知栏中 并在后台运行 即使它关闭也是如此 类似于 KWGT Kustom Widget Maker 我尝试过寻找允许这样做的库 但我只能找到与 java 相关的库 是否有适用于 Dart Flu
  • 如何在运行时运行 php 扩展

    我正在尝试在运行时加载 php 扩展 由于不鼓励使用 dl 并且它已从 PHP 中删除 我正在使用 php 扩展指令 但它也不起作用 ini set extension php gmp dll if extension loaded gmp
  • Nesta CMS 和 Rails3 集成:将博客添加到现有的 Rails 3 应用程序中

    我将 Nesta 0 9 8 cms 添加到现有的 Rails 3 0 10 应用程序中 我启动并运行了博客 但没有启动布局 样式表 到目前为止我所做的是 1 在rails应用程序主根目录中 添加gem nesta gem sass 并运行
  • 检测 URL 标签 example.com/page.php#anycontent

    我如何识别这种类型的标签 example com file php inbox or example com another php spam 就像 Gmail 正在检测 inbox spam mycontent 我尝试过 SERVER R
  • Objective C 中发送消息实际上是异步的吗?

    消息的概念通常与异步调用相关 Objective C 也是这样吗 即 当调用者向被调用者发送消息以对其执行方法时 调用者是立即继续还是被阻塞 直到被调用者完成执行所请求的方法 肯定是被堵住了 因为这些消息实际上是用纯 C 语言翻译的 myO
  • 我应该在回复元数据拒绝后重新提交二进制文件吗?

    我的申请收到元数据拒绝 要求对我的申请进行一些澄清 Information Needed Your iTunes Connect settings indicate that your app serves third party adve
  • 在两个容器之间移动列表元素,并结合自动完成功能

    我会以某种方式假设类似的事情已经被问过但找不到任何东西 一开始 所有学生都在左侧列表中 用户可以通过单击箭头将学生移动到右侧列表 用户可以将学生移回原始列表 如果学生群体太大 用户可以使用自动完成功能进行搜索 按添加 或输入 添加会将自动完
  • Tomcat内部如何处理session? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 根据我的理解 Servlet 容器使用一些 HTTP 协议处理会话 例如 隐藏表单字段 网址重写 Cookies 我很好奇如何阿帕奇雄
  • 获取在 Shiny 中使用 grep 触发的事件(生成的输入)

    我已生成输入 1 2 等 但我想知道触发了哪个事件 有用 获取在 Shiny 中触发的事件 https stackoverflow com questions 56770222 get the event which is fired in
  • 任何框架函数有助于查找多个字符串的最长公共起始子字符串?

    我有一个字符串列表 代表路径和 它们都应该有一个共同的开头 根路径 我需要有一个共同的开始 这只是需要组合在一起的几行代码 但我有一种挥之不去的感觉 每年必须将其组合在一起一百万次 并且框架中可能有一个算法可以用于此目的 但找不到任何东西
  • mongodb聚合项目objectId与concat

    db test aggregate match themType SuperTest mType in 1 2 project id 1 refTestId 1 avatar concat refTestId avatar 返回 null
  • ObjC 方法类型编码字符串中的数字是什么?

    我正在阅读 苹果关于 Objective C 运行时类型编码字符串的文章 https developer apple com library mac documentation Cocoa Conceptual ObjCRuntimeGui
  • 了解 Python 守护线程

    我显然误解了有关 Python Thread 对象的守护进程属性的一些基本知识 考虑以下 daemonic py import sys threading time class TestThread threading Thread def