【问题标题】:What difference it makes when I set python thread as a Daemon当我将 python 线程设置为守护进程时有什么不同
【发布时间】:2010-11-27 13:34:54
【问题描述】:

当我使用thread.setDaemon(True) 将python 线程设置为守护进程时,有什么区别?

【问题讨论】:

    标签: python multithreading daemon


    【解决方案1】:

    守护线程不会阻止应用程序退出。当所有非守护线程(包括主线程)都完成时,程序结束。

    因此,一般来说,如果您在后台执行某些操作,您可能希望将线程设置为守护进程,这样您就不必在应用退出之前显式地让该线程的函数返回。

    例如,如果您正在编写一个 GUI 应用程序并且用户关闭了主窗口,则程序应该退出。但是,如果你有非守护线程,它就不会。

    来自文档:http://docs.python.org/library/threading.html#threading.Thread.daemon

    它的初始值是继承自 创建线程;主线程 不是守护线程,因此 在主线程中创建的所有线程 默认为 daemon = False。

    整个 Python 程序在什么时候退出 没有存活的非守护线程。

    【讨论】:

    • 好的。现在我对守护线程有了清晰的认识。谢谢哥们!
    • 那么当你关闭应用程序时,守护线程会发生什么?
    • @Matteo 守护线程在程序退出时被杀死。
    • 好的,按照这个定义,redis pubsub 监听器是否应该是守护进程,我该如何决定,我想无限地监听从 js 发布的 redis pubsub 消息,我可以将 daemon 设置为 true然后在主线程中无限运行一个while循环来处理中断,或者我可以在线程上调用join,在这种情况下它似乎也无限运行
    猜你喜欢
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 2011-10-27
    • 2011-07-13
    • 1970-01-01
    相关资源
    最近更新 更多