threading.enumerate()中是否有特定的线程?

时间:2013-11-12 13:34:53

标签: python python-multithreading

我需要检查特定线程是否在threading.enumerate()的结果中。

让我们假设我得到了枚举的结果:

<_MainThread(MainThread, started 8568)>
<Thread(Thread-263, started 11116)>
<MyThread(Thread-235, started 21045)>

如何检查线程MyThread是否在我的结果中?

1 个答案:

答案 0 :(得分:2)

过滤线程类:

>>> import threading
>>> class MyThread(threading.Thread): pass
...
>>> def do_nothing():
...     while True:
...         pass

>>> MyThread(target=do_nothing).start()
>>> threading.Thread(target=do_nothing).start()
>>> threading.enumerate()
[<MyThread(Thread-1, started 8040)>, <Thread(Thread-2, started 7352)>, <_MainThread(MainThread, started 2772)>]
>>> [t for t in threading.enumerate() if isinstance(t, MyThread)]
[<MyThread(Thread-1, started 8040)>]