스레드 실행 패턴 기준

스레드를 직접 만들지, 풀에 맡길지, 프로세스나 async로 바꿀지는 작업의 반복성, 대기 시간, CPU 사용량에 따라 결정합니다.

I/O 대기 큼 async/await · 데몬
반복 요청 작업 큐 · 스레드 풀
CPU 점유 큼 멀티프로세스
simple

직접 생성

작업 수가 작고 수명 주기가 명확할 때 사용합니다. join 지점이 코드에 드러나야 합니다.

background

데몬 스레드

로그 수집, 헬스 체크처럼 메인 종료를 막지 않는 보조 작업에 적합합니다.

reuse

스레드 풀

반복 요청을 큐에 넣고 고정된 worker가 처리해 생성 비용과 폭주를 줄입니다.

cpu

프로세스

CPU 계산은 multiprocessing으로 코어를 나누어 씁니다.

io

async/await

수많은 네트워크 대기 작업은 이벤트 루프에서 논블로킹으로 섞어 처리합니다.

풀 크기

CPU 바운드는 코어 수 근처로 제한하고, I/O 바운드는 대기 비율을 반영해 더 크게 잡습니다.

threads = cores x (1 + wait / compute)

종료 규칙

작업 제출 종료, 큐 drain, join, timeout을 정해 두어 프로세스가 깔끔하게 내려가게 만듭니다.

안전성

공유 변수는 lock, queue, immutable 데이터로 보호하고 임계 구역을 짧게 유지합니다.