对于 ThreadPoolExecutor
,我想监控实际运行的线程数。但这似乎是不可能的。事件线程的数量不断增加。对于普通线程,如果目标函数返回,线程将关闭。
import threading, concurrent.futures
def test():
pass
p_ac=threading.active_count()
#Number of threads=2
#for threads
trs=[None]*10
for i in range(10):
trs[i]=threading.Thread(target=test)
trs[i].start
print(threading.active_count()==p_ac)
#True
#for executor
executor=concurrent.futures.ThreadPoolExecutor(10)
for _ in range(10):
executor.submit(test)
print(threading.active_count())
#Number of threads=12
ThreadPoolExecutor
不会在事件时关闭其线程。 ThreadPoolExecutor(X)
创建 X
个线程并使它们保持事件状态,直到您通过 executor.shutdown()
关闭执行器或执行器本身决定它不关闭需要这么多线程。无论如何,如果执行程序处于事件状态,X
是预期的线程数。
我是一名优秀的程序员,十分优秀!