개요
요약 비교
라이브러리 | 도입 버전 | 병렬성 형식 | 강점 | 제약/단점 |
threading | Python ≥1.5.2 | OS 스레드 | - I/O-bound 작업에서 간단히 동시성 구현 가능- 표준 라이브러리로 별도 설치 불필요 | - GIL로 인해 CPU-bound 병렬 처리 불가- 스레드 생성·컨텍스트 스위칭 오버헤드- 데드락·레이스 컨디션 위험 |
multiprocessing | Python ≥2.6 | OS 프로세스 | - GIL 제약 없이 진정한 CPU-bound 병렬 처리- 독립 메모리 공간으로 안정성 ↑ | - 프로세스 생성·통신(IPC) 오버헤드 큼- 메모리 복제 비용 발생 |
concurrent.futures | Python ≥3.2 | 스레드/프로세스 풀 | - ThreadPoolExecutor, ProcessPoolExecutor 제공- 통일된 고수준 인터페이스 | - 내부는 threading/multiprocessing 의존- 근본적 GIL 제약은 동일 |
asyncio | Python ≥3.4 | 협력형 코루틴 (이벤트루프) | - 수만 개 동시 I/O-bound 태스크 처리 가능- 스레드 오버헤드 거의 없음 | - 블로킹 코드가 이벤트 루프 전체를 멈춤- 외부 라이브러리의 async 지원 필요 |
Celery | v0.9.0 (2011) | 분산 워커 기반 태스크 큐 | - 다수의 워커에 작업 분산 가능- 비동기·주기적 작업 스케줄링 지원- Redis/RabbitMQ 등 브로커 선택 가능 | - 별도 메시지 브로커 구성 필요- 운영 복잡도(모니터링, 장애 복구) ↑ |
