1
ThreadPoolExecutor
については、実際に実行されているスレッドの数を監視したいと思います。しかし、これは不可能と思われます。アクティブなスレッドの数は絶えず増加しています。通常のスレッドの場合、ターゲット関数が戻ると、スレッドはシャットダウンします。ときにアクティブ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
実際に実行されているスレッドの数を追跡できますか?私の目的は、max_workersの最適化された数を選択することです。現在、グローバルカウンタを使用しています(つまり、関数を送信する場合は+1、関数が返される場合は-1)。 – user2923419
@ user2923419 'ThreadPoolExecutor'を使っているときにスレッドの数を追跡する必要はありません。あなたが定義した数のスレッドがあると、安全に仮定できます。あなたがここで何をしようとしているのか分かりません。 – freakish
だから、max_workersを10に設定して100に設定することに違いがあると思いますか?効率を改善できない場合は余分なスレッドを生成したくありません。 – user2923419