如何从另一个(非守护进程、子(线程检查主线程是否处于活动状态
子线程是一个非守护进程线程,我想检查主线程是否仍在运行,并根据结果停止这个非守护进程。
(制作线程守护程序对我的情况不好,因为我的线程写入stdout
,当线程设置为守护程序时会产生问题(
使用python 2.7
-
对于Python 2.7,您可以尝试以下操作:
for i in threading.enumerate(): if i.name == "MainThread": print i.is_alive()
不赞成在函数名中使用小写字母,因此应该使用
i.is_alive()
而不是i.isAlive()
。 -
如果你喜欢一句俏皮话,试试这个:
is_main_thread_active = lambda : any((i.name == "MainThread") and i.is_alive() for i in threading.enumerate())
然后调用
is_main_thread_active()
检查主线程是否处于活动状态。然而,对于一次性使用,您可以直接使用它,而无需创建函数。
any((i.name == "MainThread") and i.is_alive() for i in threading.enumerate())
-
有关线程的详细信息,请查看此页。
-
在python 3.4中,存在一个返回主线程的专用函数,因此您可以使用这一行来查看您的主线程是否仍然有效。。
threading.main_thread().is_alive()
希望这对你有帮助。
除了Raghav所说的,您还可以将主线程保存在全局变量中,如下所示:
mainThread = threading.currentThread() # current_thread() in py 3
则使用CCD_ 6。