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条线。只是玩弄不同的价值观,衡量绩效。