프로그래밍언어/파이썬[중급]

[파이썬][중급] 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