在Python documentation中,它说:
可以将线程标记为“守护进程线程”。这个标志的意义在于,当只剩下守护进程线程时,整个Python程序就会退出。初始值继承自创建线程。
有没有人能更清楚地解释这意味着什么,或者有一个实际的例子来说明你应该在什么地方将线程设置为daemonic
为我澄清一下:所以唯一不会将线程设置为daemonic
的情况是,当您希望它们在主线程退出后继续运行时?
发布于 2008-10-10 03:27:36
一些线程执行后台任务,比如发送保持连接数据包,或者执行周期性的垃圾收集,等等。它们只有在主程序运行时才有用,一旦其他非守护进程线程退出,就可以终止它们。
如果没有守护进程线程,您必须跟踪它们,并告诉它们退出,然后程序才能完全退出。通过将它们设置为守护线程,您可以让它们运行并忘记它们,当您的程序退出时,任何守护线程都会自动终止。
发布于 2008-10-10 03:36:17
假设您正在制作某种仪表板小部件。作为其中的一部分,您希望它在您的电子邮件框中显示未读邮件计数。所以你做了一个小线程,它将:
当您的小部件启动时,它将创建此线程,将其指定为守护进程并启动它。因为它是一个守护进程,所以您不必考虑它;当小部件退出时,线程将自动停止。
发布于 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
严格地说,你永远不需要它们,它只是在某些情况下使实现更容易。
https://stackoverflow.com/questions/190010
复制相似问题