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