【发布时间】:2014-05-09 20:07:36
【问题描述】:
如何关闭/退出线程或守护线程?我的应用程序中有这样的东西:
th = ThreadClass(param)
th.daemon = True
if option == 'yes':
th.start()
elif option == 'no':
# Close the daemon thread
如何退出应用程序?
【问题讨论】:
-
我不确定你的意思。在您拥有的 if 语句的
elif分支中,线程永远不会启动,因此无需“关闭”它。 -
@alecb 但假设我第一次运行应用程序时,
option的值是“yes”。第二次运行时,我将option设置为“否”。 -
如果线程是守护线程,那么
sys.exit(0)会导致它关闭。当最后一个非守护线程退出时,所有守护线程应该停止。 -
@vgo 我想你可能对守护线程的作用感到困惑——它们在 python 程序的多次调用或类似的东西上不是“持久的”。如果所有其他(非守护程序)线程都已完成,它们只是不会使程序保持活动状态的线程。
-
请注意,您的程序只会在所有线程都死机时结束——线程不会从一个执行转移到另一个执行。但是,关闭非守护线程的一种方法是使用
th.join(),它将等待线程的函数返回。
标签: python multithreading daemon