본문 바로가기
프로그래밍/Python

[병렬 프로그래밍] 5. multiprocessing 모듈을 이용하여 여러 인자를 갖는 함수 병렬 처리하기 (feat. starmap)

by 부자 꽁냥이 2023. 3. 22.

파이썬(Python)에서 병렬 프로그래밍을 위한 multiprocessing 모듈에는 여러 인자를 갖는 함수를 처리하기 위한 기능을 제공한다. Pool 객체의 starmap를 이용하면 여러 인자를 갖는 함수를 병렬 처리 할 수 있다. 이번 포스팅에서는 starmap의 사용법을 알아보자.


   여러 인자를 갖는 함수 병렬 처리

starmap은 첫 번째 인자로 작업 함수를 전달하고 두 번째 인자에 작업 함수 인자를 리스트에 담으면 된다.

 

starmap( function, [ ( x1, y1, z1), ( x2, y2, z2 ), . . .  ]

 

아래 코드는 일차 함수값을 계산하는 do_job에서 첫 번째 인자를 변하고 두 번째, 세 번째 인자를 같은 값으로 고정하여 결과값을 리스트에 담는다.

 

from multiprocessing import Pool, freeze_support

def do_job(x, a, b):
    return a*x+b

if __name__ == '__main__':
    freeze_support() ## 이게 없으면 에러났음.
    
    num_core = 2 ## 코어 개수
    with Pool(num_core) as pool:
        results = pool.starmap(do_job, [(x, 3, 4) for x in range(6)])
        
    print(results)

 

 

코드를 실행하면 예상한 결과가 잘 나오는 것을 확인할 수 있다.


댓글


맨 위로