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

Python 减少ThreadPoolExecutor创建的活动线程数?,python,multithreading,concurrent.futures,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]=th

对于
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
是执行器处于活动状态时的预期线程数。

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

所以我可以跟踪实际运行的线程数吗?我的目的是选择最佳数量的max_工人。目前,我正在使用全局计数器来完成此操作(即提交函数时为+1,函数返回时为-1)。@user2923419使用
ThreadPoolExecutor
时,不必跟踪线程数。您可以安全地假设有您定义的线程数。我不知道你想在这里做什么。所以我认为将max_workers设置为10和设置为100是有区别的,对吗?如果不能帮助提高效率,我不想生成额外的线程。@user2923419 10个max_workers意味着10个线程。100意味着100条线。只需使用不同的值并测量性能,那个么我可以跟踪实际运行的线程数吗?我的目的是选择最佳数量的max_工人。目前,我正在使用全局计数器来完成此操作(即提交函数时为+1,函数返回时为-1)。@user2923419使用
ThreadPoolExecutor
时,不必跟踪线程数。您可以安全地假设有您定义的线程数。我不知道你想在这里做什么。所以我认为将max_workers设置为10和设置为100是有区别的,对吗?如果不能帮助提高效率,我不想生成额外的线程。@user2923419 10个max_workers意味着10个线程。100意味着100条线。只是玩弄不同的价值观,衡量绩效。