Dan*_*lay 3 python multithreading python-multithreading
我如何检查主线程是否从另一个(非守护程序,子线程)线程还存在?
子线程是非守护线程,我想检查Main线程是否仍在运行,并根据结果停止该非守护线程。
(使线程守护程序不适用于我的情况,因为stdout当线程设置为守护程序时,我的线程写入该线程会产生问题)
使用python 2.7
对于Python 2.7,您可以尝试以下操作:
for i in threading.enumerate():
if i.name == "MainThread":
print i.is_alive()
Run Code Online (Sandbox Code Playgroud)
不建议在函数名称中使用小写驼峰,因此您应该使用i.is_alive()而不是i.isAlive()。
如果您喜欢单线,请尝试以下操作:
is_main_thread_active = lambda : any((i.name == "MainThread") and i.is_alive() for i in threading.enumerate())
Run Code Online (Sandbox Code Playgroud)
然后调用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()
Run Code Online (Sandbox Code Playgroud)希望这对您有所帮助。
| 归档时间: |
|
| 查看次数: |
5801 次 |
| 最近记录: |