파이썬(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)
코드를 실행하면 예상한 결과가 잘 나오는 것을 확인할 수 있다.
'프로그래밍 > Python' 카테고리의 다른 글
파이썬(Python) statistics 모듈을 이용한 통계량 계산하기 (0) | 2023.03.25 |
---|---|
파이썬(Python) time 모듈을 이용하여 시간 정보 가져오기 (0) | 2023.03.22 |
파이썬(Python) logging 모듈을 이용한 로그(Log) 남기기 (2) | 2023.03.21 |
파이썬(Python) 달력 다루기 (feat. calendar) (0) | 2023.03.18 |
파이썬(python) 날짜 다루기 (feat. datetime) (0) | 2023.03.18 |
댓글