
307
9
장
multiprocessing 모듈
9.3
프로세스와 스레드를 사용해 원주율 추정하기
먼저 부동소수점 수 객체와 루프를 사용하는 일반적인 파이썬 구현부터 시작해보자. 이쪽이 이
해하기 더 쉽기 때문이다. 그 구현을 프로세스를 사용해 병렬화해서 모든 가용
CPU
를 사용하
도록 만들고, 사용하는
CPU
가 늘어나면서 컴퓨터의 상태가 어떻게 바뀌는지 시각화한다.
9.3.1
파이썬 객체 사용하기
파이썬 구현은 읽기 쉽지만, 각각의 파이썬 부동소수점 수 객체를 순서대로 관리하고 참조하며
동기화해야 하는 부가비용이 든다. 이런 부가비용이 속도를 늦추지만, 구현하기는 쉬우니 일단
구현한 다음 생각할 시간을 벌 수 있다. 이 버전을 병렬화하면 아주 적은 작업만으로도 속도가
빨라진다.
다트를 1억 개 사용해 원주율을 구할 때 순차 버전,
스레드 사용 버전, 프로세스 사용 버전에 드는 시간 비교
순차 버전과 프로세스가 1개인 버전은 실행 시간이 같다
순차
스레드
프로세스
실행 시간(단위: 초) - 작을수록 더 성능이 좋다
작업자 수
그림
9-2
순차 버전, 스레드 사용 버전, 프로세스 사용 버전의 비교