【发布时间】:2014-06-06 20:07:13
【问题描述】:
如果子线程在python中处于活动状态,如何强制关闭主线程?
sys.exit() 和 exit() 似乎在等待子线程完成?
【问题讨论】:
-
可能是因为子线程被设置为非守护线程。不确定这是否会阻止执行停止。可能值得研究。如果您使用的是 Threading 模块,则在初始化中有一个选项来确定其守护进程状态。默认情况下,所有线程进程都继承其父线程状态。由于父母是主要的,他们将被设置为非守护进程。要更改此设置,您可以在初始化期间将其设置为 daemon=False。
-
引用其中一个答案:“如果没有守护线程,您必须跟踪它们并告诉它们退出,然后您的程序才能完全退出。”
-
我明白了......好吧,这个想法是为了杀死子线程而杀死主线程......这在python中无论如何都可能吗?
-
@user3388884 如果你想让子线程在主线程死掉时也死掉,让你的子线程守护线程:
subthread.daemon = True。在对它们调用start()之前,您必须将它们设置为守护进程。 -
您应该查看 SO Is there a way to kill a Thread in Python 上的其他帖子。您将找到问题的所有要素。
标签: python multithreading