减少ThreadPoolExecutor创建的活动线程数?

时间:2017-09-11 14:59:38

标签: python multithreading concurrent.futures

对于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

1 个答案:

答案 0 :(得分:4)

ThreadPoolExecutor 在激活时不会关闭其线程。 ThreadPoolExecutor(X)创建X个线程并使它们保持活动状态,直到您通过executor.shutdown()关闭执行程序或执行程序本身决定它不需要这么多线程。无论如何X是执行者活动时预期的线程数量。