[파이썬] 파이썬 내장 모듈인 multiprocessing 사용

파이썬은 강력한 스크립트 언어로서 다양한 작업들을 수행할 수 있습니다. 하지만 많은 작업을 동시에 처리해야 하는 경우, 효율적인 병렬 처리가 필요합니다. 이때 파이썬의 내장 모듈인 multiprocessing을 사용하면 작업을 운영 체제의 여러 프로세스에서 동시에 실행할 수 있습니다.

multiprocessing 모듈을 사용하면 병렬 처리를 위해 다중 프로세스를 생성하고 관리할 수 있습니다. 이를 통해 CPU의 다중 코어를 활용하여 작업의 속도를 대폭 향상시킬 수 있습니다.

multiprocessing 모듈의 주요 기능과 사용법

1. Process 클래스

multiprocessing 모듈은 Process 클래스를 제공합니다. 각 프로세스는 이 클래스의 인스턴스로 생성됩니다. Process 클래스를 사용하면 다중 프로세스를 생성하고, 각 프로세스에서 실행할 함수 또는 메서드를 지정할 수 있습니다.

다음은 Process 클래스를 사용하여 간단한 예제를 작성한 코드입니다.

import multiprocessing

def worker():
    print("Worker process")

if __name__ == "__main__":
    p = multiprocessing.Process(target=worker)
    p.start()
    p.join()

위 예제에서는 worker라는 함수를 실행하는 프로세스를 생성하고 실행하고 있습니다. target 매개변수에 실행할 함수를 지정하고, start() 메서드로 프로세스를 실행합니다. join() 메서드는 프로세스의 실행이 종료될 때까지 기다리는 역할을 합니다.

2. Pool 클래스

Pool 클래스는 Worker Pool을 생성하여 함수 또는 메서드를 여러 번 병렬로 실행할 수 있게 해줍니다. 각 작업은 Pool에 의해 자동으로 여러 프로세스에게 분배되어 병렬 처리됩니다.

다음은 Pool 클래스를 사용하여 간단한 예제를 작성한 코드입니다.

import multiprocessing

def worker(x):
    return x * x

if __name__ == "__main__":
    with multiprocessing.Pool() as pool:
        results = pool.map(worker, [1, 2, 3, 4, 5])
        print(results)

위 예제에서는 worker 함수를 병렬로 실행하여 리스트의 값의 제곱을 계산하고 있습니다. Pool.map() 메서드는 리스트의 각 요소를 worker 함수에 적용하여 결과를 반환합니다. 결과는 리스트 형태로 반환되며, 프로세스의 갯수는 운영 체제의 CPU 코어 수와 동일합니다.

결론

파이썬의 내장 모듈인 multiprocessing은 병렬 처리를 위해 다중 프로세스를 생성하고 관리할 수 있도록 도와줍니다. 이를 사용하면 병렬 처리를 통해 CPU의 다중 코어를 활용하여 작업 속도를 향상시킬 수 있습니다. multiprocessing 모듈은 간단하고 강력한 기능을 제공하므로, 병렬 처리가 필요한 작업을 위해 적극적으로 활용할 수 있습니다.