GIL, 멀티스레딩, 멀티프로세싱
GIL (Global Interpreter Lock)
"한 번에 오직 하나의 스레드만 Python 코드를 실행할 수 있다"는 Python의 규칙.
멀티스레딩 (Multithreading)
하나의 프로세스 안에서 여러 작업을 나누어 처리. 하나의 GIL을 공유하므로, 진짜 병렬 처리는 아님.
멀티프로세싱 (Multiprocessing)
여러 개의 독립적인 프로세스를 만들어 작업을 처리. 각자 독립된 GIL을 가지므로, 진짜 병렬 처리가 가능.
핵심 비교표

그래서 언제 뭘 써야 하나?
내 작업이 CPU를 많이 쓰는가? (복잡한 계산, 데이터 분석 등)
Yes → 무조건 멀티프로세싱 사용
내 작업이 I/O 대기 시간이 긴가? (네트워크 요청, 파일 다운로드 등)
Yes → 멀티스레딩 또는 **비동기(Asyncio)**가 가볍고 효율적
반응형
'Development Experience > Python' 카테고리의 다른 글
| 연속적인 DataFrame의 값들을 몇 개의 그룹으로 나누고 싶을 때 (0) | 2023.07.16 |
|---|---|
| Numpy 차원 낮추기 - ravel() vs reshape() vs flatten() (0) | 2023.07.07 |