从另一个线程检查主线程是否仍处于活动状态



如何从另一个(非守护进程、子(线程检查主线程是否处于活动状态

子线程是一个非守护进程线程,我想检查主线程是否仍在运行,并根据结果停止这个非守护进程。

(制作线程守护程序对我的情况不好,因为我的线程写入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。

相关内容

  • 没有找到相关文章

最新更新