기본 콘텐츠로 건너뛰기

라벨이 CPU 바운드인 게시물 표시

Python에서 멀티프로세싱을 사용하는 실전 예제

개요 Python에서 멀티프로세싱을 활용하면 CPU 바운드 작업의 처리 속도를 획기적으로 향상시킬 수 있습니다. 단일 코어만 사용하는 싱글 스레드 방식과 달리, 멀티프로세싱은 여러 코어를 활용하여 병렬 처리를 가능하게 하므로, 특히 CPU 사용률이 높은 작업에 효과적입니다. 이 포스트에서는 실제 코드 예제를 통해 Python의 multiprocessing 모듈을 사용하는 방법과 주의사항을 알아보겠습니다. 핵심 개념 정리 Python의 multiprocessing 모듈은 프로세스 생성 및 관리를 위한 다양한 기능을 제공합니다. 핵심 클래스는 Process 이며, 이를 이용해 새로운 프로세스를 생성하고, target 인자로 실행할 함수를 지정합니다. args 와 kwargs 인자를 통해 함수에 인자를 전달할 수 있습니다. Pool 클래스는 여러 프로세스를 효율적으로 관리하는 데 유용하며, map , apply_async 등의 메서드를 통해 병렬 처리 작업을 수행할 수 있습니다. 실전 코드 예제 다음은 CPU 바운드 작업인 소수 판별을 멀티프로세싱으로 구현한 예제입니다. is_prime 함수가 소수 판별 로직을 담고 있으며, multiprocessing.Pool 을 사용하여 여러 프로세스에서 병렬적으로 실행합니다. import multiprocessing import time def is_prime(n): if n <= 1: return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True if __name__ == '__main__': numbers = list(range(100000)) # 판별할 숫자 리스트 start_time = time.time() # 싱글 스레드 방식 si...