Dev Language/Python
[파이썬_4] #13. CPU Bound vs IO Bound
ydin
2021. 12. 8. 00:32
- 공부한 날짜: 2021.12
- Concurrency
- CPU Bound vs I/Bound
- 작업 목적에 따라서 적절한 동시성 라이브러리 선택이 중요하다
CPU Bound | I/O Bound |
프로세스 진행 -> CPU 속도에 의해 제한(결정) -> 행렬 곱, 고속 연산, 압출 파일, 집합 연산 등 |
파일쓰기, 디스크 작업, 네트워크 통신, 시리얼 포트 송수신 -> 작업에 의해서 병목에 따라 수행시간이 결정됨 |
CPU의 연산 위주 작업 시 사용. CPU 성능에 따라 달라진다 | CPU 성능 지표가 수행시간 단축에 크게 영향을 미치지 않는다 |
- 최종 비교
Multiprocessing | Threading | AsyncIO |
Multiple Processes, 고가용성(CPU) Utilization - > CPU-Bound -> 10개의 요리사, 10개의 요리 |
Single(Multi) process, Multiple threads, OS decides task switching -> Fast I/O Bound -> 1개의 부엌, 10명의 요리사, 10명의 요리 |
Single process, Single thread, cooperative multitasking, tasks cooperatively decides switching -> Slow I/O Bound -> 1개의 부엌, 1명의 요리사, 10개의 요리 |