프로그래밍언어/파이썬[중급]
[파이썬][중급] Chapter26. multiprocessing으로 병렬 처리
about_IT
2025. 5. 23. 23:40
728x90
파이썬의 multiprocessing
모듈은 CPU 코어를 활용하여 병렬로 작업을 처리할 수 있는 기능을 제공합니다. 특히 GIL(Global Interpreter Lock)의 영향을 받지 않기 때문에 CPU 바운드 작업에서 유리합니다.
● 프로세스란?
프로세스는 운영체제에서 자원을 독립적으로 할당받는 실행 단위입니다. 멀티프로세싱은 여러 개의 프로세스를 동시에 실행하여 진정한 병렬성을 달성합니다.
● 기본 사용법
from multiprocessing import Process
def worker(num):
print(f"프로세스 {num} 실행")
if __name__ == "__main__":
p1 = Process(target=worker, args=(1,))
p2 = Process(target=worker, args=(2,))
p1.start()
p2.start()
p1.join()
p2.join()
각 Process 객체는 독립된 프로세스를 생성합니다. start()
로 실행하고, join()
으로 대기합니다.
● Pool을 사용한 병렬 처리
Pool
은 여러 작업을 병렬로 처리할 때 유용한 방식입니다. map
이나 apply
와 유사한 인터페이스를 제공합니다.
from multiprocessing import Pool
def square(n):
return n * n
if __name__ == "__main__":
with Pool(4) as pool:
results = pool.map(square, [1, 2, 3, 4])
print(results)
● 프로세스 간 데이터 공유
Value
, Array
, Manager
객체를 통해 데이터를 공유할 수 있습니다.
from multiprocessing import Value
def worker(val):
with val.get_lock():
val.value += 1
공유 객체는 반드시 __main__
블록 안에서 생성되어야 하며, Lock
을 통해 동기화합니다.
● 마무리
multiprocessing
은 파이썬에서 병렬 처리를 구현할 수 있는 강력한 도구입니다. 데이터 분석, 이미지 처리, 대규모 연산 등에 매우 적합하며, 특히 멀티코어 CPU 환경에서 성능을 극대화할 수 있습니다.
728x90