对于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
答案 0 :(得分:4)
ThreadPoolExecutor
在激活时不会关闭其线程。 ThreadPoolExecutor(X)
创建X
个线程并使它们保持活动状态,直到您通过executor.shutdown()
关闭执行程序或执行程序本身决定它不需要这么多线程。无论如何X
是执行者活动时预期的线程数量。