스레드 풀은 공유 작업 큐에서 작업을 가져오는, 재사용 가능한 워커 스레드의 고정된 집합입니다. 작업마다 스레드를 생성하는 비용을 피하고 동시 스레드 수의 상한을 둡니다.
왜 사용하는가
스레드를 생성하고 파괴하는 것은 비쌉니다(스택 할당, OS 스케줄링 설정). 그리고 제한 없는 스레드 생성은 메모리를 소진시키고 컨텍스트 전환 스래싱을 일으킵니다. 풀은 생성 비용을 분산시키고 동시성을 제한합니다.
text
tasks → [ work queue ] → worker 1
worker 2 (N fixed workers pull & run)
worker 3
예제
python
concurrent.futures ThreadPoolExecutor
ThreadPoolExecutor(max_workers=) pool:
futures = [pool.submit(handle, req) req requests]
