782
4
부
제어 흐름
시에
100
개의 프로세스를 처리하는 단일 코어 시스템을 사용했다.
CPU
코어가
4
개인 랩톱 컴
퓨터는 일반적인 운용 환경에서
200
개 이상의 프로세스를 일상적으로 실행한다.
200
개의 작
업을 병렬로 처리하려면
200
개의 코어가 필요하다. 따라서 대부분의 컴퓨팅은 동시적이지만
병렬은 아니다.
CPU
자체는
4
가지 이상의 작업을 한 번에 처리할 수 없지만,
OS
가 수백 개의
프로세스를 관리하면서 각 프로세스에 진행할 기회를 준다.
이 장은 여러분이 동시성이나 병렬 프로그래밍에 관한 사전 지식이 없다고 가정한다. 간략히
개념을 소개한 후, 파이썬에서 동시성 프로그래밍을 지원하기 위해 제공하는 핵심 패키지인
threading
,
multiprocessing
,
asyncio
를 소개하고 비교하는 간단한 예제들을 살펴볼 것이다.
이 장 마지막
30
%에서는 서드파티 도구, 라이브리러, 애플리케이션 서버, 분산 태스크 큐를 간
략히 살펴볼 것이다. 이들 모두 파이썬 애플리케이션의 성능과 규모 확장성을 향상한다. 모두
중요한 주제이긴 하지만, 파이썬 언어 핵심 기능에 주력하는 책에서 다룰 범위를 벗어난다. 그
렇지만
2
판에서 이 주제들을 다뤄야 한다고 생각했다. 동시성 및 병렬 컴퓨팅에 대한 파이썬의
적합성은 파이썬 표준 라이브러리가 제공하는 기능에 국한되지 않기 때문이다. 따라서 ‘파이썬
은 규모 확장성이 떨어진다’는 끊임없는 비판이 있음에도 유튜브, 드롭박스, 인스타그램, 레딧
등이 파이썬을 핵심 언어로 사용해 시작하고도 ...