首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >守护进程线程说明

守护进程线程说明
EN

Stack Overflow用户
提问于 2008-10-10 03:24:07
回答 8查看 149.6K关注 0票数 273

Python documentation中,它说:

可以将线程标记为“守护进程线程”。这个标志的意义在于,当只剩下守护进程线程时,整个Python程序就会退出。初始值继承自创建线程。

有没有人能更清楚地解释这意味着什么,或者有一个实际的例子来说明你应该在什么地方将线程设置为daemonic

为我澄清一下:所以唯一不会将线程设置为daemonic的情况是,当您希望它们在主线程退出后继续运行时?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-10-10 03:27:36

一些线程执行后台任务,比如发送保持连接数据包,或者执行周期性的垃圾收集,等等。它们只有在主程序运行时才有用,一旦其他非守护进程线程退出,就可以终止它们。

如果没有守护进程线程,您必须跟踪它们,并告诉它们退出,然后程序才能完全退出。通过将它们设置为守护线程,您可以让它们运行并忘记它们,当您的程序退出时,任何守护线程都会自动终止。

票数 509
EN

Stack Overflow用户

发布于 2008-10-10 03:36:17

假设您正在制作某种仪表板小部件。作为其中的一部分,您希望它在您的电子邮件框中显示未读邮件计数。所以你做了一个小线程,它将:

  1. 连接到邮件服务器并询问您有多少未读邮件。
  2. 向图形用户界面发送更新后的计数信号。
  3. 休眠一段时间。

当您的小部件启动时,它将创建此线程,将其指定为守护进程并启动它。因为它是一个守护进程,所以您不必考虑它;当小部件退出时,线程将自动停止。

票数 32
EN

Stack Overflow用户

发布于 2009-02-24 22:55:11

其他的帖子给出了一些使用守护线程的情况的例子。然而,我的建议是永远不要使用它们。

这并不是因为它们没有用,而是因为如果您使用它们,您可能会体验到一些不良的副作用。在Python运行时开始拆卸主线程中的内容后,守护程序线程仍然可以执行,从而导致一些非常奇怪的异常。

更多信息请点击此处:

https://joeshaw.org/python-daemon-threads-considered-harmful/

https://mail.python.org/pipermail/python-list/2005-February/343697.html

严格地说,你永远不需要它们,它只是在某些情况下使实现更容易。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/190010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档