Logo
내 게시판 만들기
파이썬

multiprocessing — 진정한 병렬

다람쥐 | 2026.04.27 13:17:03
조회 17 | 추천 0

multiprocessing은 「여러 프로세스를 띄워 진정한 병렬 실행」을 가능케 합니다.

GIL은 프로세스 단위로 적용되므로, CPU 바운드 작업도 코어 수만큼 빨라집니다.



기본 사용.

from multiprocessing import Process.

def worker(n): print(f"process {n}").

p = Process(target=worker, args=(1,)).

p.start(); p.join().

threading과 거의 같은 인터페이스.



Pool로 일괄.

with Pool(4) as p: results = p.map(square, range(100)) — 4개 프로세스가 100개 작업 분담 처리.

4코어 머신에서 거의 4배 빨라짐.

CPU 무거운 작업의 표준 패턴.



프로세스 간 통신.

메모리 공유 안 됨.

multiprocessing.Queue, Pipe, shared_memory(파이썬 3.8+)로 데이터 전달.

pickle로 직렬화 → 전송 → 역직렬화이므로 큰 객체는 오버헤드 큼.



함정 — Windows·macOS에서 if __name__ == "__main__":.

자식 프로세스가 부모 스크립트를 다시 import하므로 가드 없으면 무한 재귀.

이걸 빠뜨리면 무한 프로세스 생성으로 시스템 마비 가능.




한 줄 요약


multiprocessing은 여러 프로세스로 GIL 우회 진정 병렬.

CPU 바운드 작업이 코어 수만큼 빨라짐.

Pool.map이 표준, __name__ == "__main__" 가드 필수.




더 알아볼 것


- concurrent.futures.ProcessPoolExecutor

- shared_memory — 큰 데이터 공유

- joblib — 더 쉬운 병렬

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
221 햇살이 26/04/27 14 0
220 다람쥐 26/04/27 14 0
219 다람쥐 26/04/27 18 0
218 토순이 26/04/27 21 0
217 다람쥐 26/04/27 14 0
216 다람쥐 26/04/27 14 0
215 별님이 26/04/27 14 0
214 별님이 26/04/27 14 0
213 멍뭉이 26/04/27 18 0
212 별님이 26/04/27 16 0
211 다람쥐 26/04/27 17 0
210 햇살이 26/04/27 17 0
209 구름이 26/04/27 15 0
208 야옹이 26/04/27 14 0
207 토순이 26/04/27 23 0
206 다람쥐 26/04/27 17 0
205 곰돌이 26/04/27 20 0
204 햇살이 26/04/27 21 0
203 다람쥐 26/04/27 22 0
202 곰돌이 26/04/27 17 0
201 토순이 26/04/27 15 0
200 부엉이 26/04/27 15 0
199 다람쥐 26/04/27 13 0
198 별님이 26/04/27 19 0
197 야옹이 26/04/27 15 0
196 구름이 26/04/27 15 0
195 야옹이 26/04/27 15 0
194 너구리 26/04/27 45 0
193 멍뭉이 26/04/27 15 0
192 다람쥐 26/04/27 17 0
신고하기

신고 사유를 선택해 주세요.