Python은 세 가지 동시성 모델을 제공하며, 올바른 선택은 주로 작업이 I/O 바운드인지 CPU 바운드인지에 달려 있습니다 — 이는 GIL(스레드가 Python 코드를 병렬로 실행하지 못하게 함)에 크게 좌우되는 결정입니다.
세 가지 모델
threading → 여러 스레드, 하나의 프로세스. CPU에 대해 GIL 제한.
multiprocessing → 여러 프로세스, 각자 자체 인터프리터/GIL → 진정한 병렬성.
asyncio → 단일 스레드, await 지점에서 양보하는 협력적 코루틴.
threading — I/O 바운드 동시성용
concurrent.futures ThreadPoolExecutor
ThreadPoolExecutor(max_workers=) ex:
results = (ex.(download_url, urls))
