반응형
안녕하세요!!
오늘은 Multiprocessing Pool 사용 시에 적용하고자 하는 함수가 여러개의 인자를 가지고 있을 때
어떻게 핸들링 하는가에 대해서 배워보겠습니다. 한국어로 깔끔하게 정리된 자료가 없는 것 같아 정리합니다.
여기에서는 기본적인 Multiprocessing의 Pool 함수에 대해서는 다루지 않겠습니다.
구글링 조금만 해봐도 정리가 잘 된 자료들이 아주 많아서요..!
일단 검색하시면 함수 인자를 하나만 받는 예시는 쉽게 찾으실 수 있습니다.
이런 예시문이요,
def f(x):
print("값", x, "에 대한 작업 Pid = ",os.getpid())
time.sleep(1)
return x*x
if __name__ == '__main__':
p = Pool(4)
startTime = int(time.time())
print(p.map(f, range(0, 10)))
endTime = int(time.time())
print("총 작업 시간", (endTime - startTime))
그러나 저는, x 하나만 받는게 아닌, 여러개의 매개변수를 받고자 했고, 그 중에서도 x처럼 iteration을 받는 매개변수도 하나 필요했었습니다.
from functools import partial
def f(a, b, c):
print("{} {} {}".format(a, b, c))
def main():
iterable = [1, 2, 3, 4, 5]
pool = multiprocessing.Pool()
a = "hi"
b = "there"
func = partial(f, a, b)
pool.map(func, iterable)
pool.close()
pool.join()
if __name__ == "__main__":
main()
이렇게 해결하시면 되겠습니다.
모두 해피코딩하세요!!!
반응형
'파이썬' 카테고리의 다른 글
파이썬) pipy 모듈 업그레이드 (0) | 2021.09.17 |
---|---|
파이썬) 모듈 개발부터 배포까지 (0) | 2021.09.15 |
파이썬) 문자열인 딕셔너리 > 딕셔너리로 형변환 (0) | 2021.09.05 |
파이썬) 모든 경우의 수 추출 가능한 라이브러리 (0) | 2021.09.05 |
모듈이 있으나 찾을 수 없을 때 / ModuleNotFoundError: No module named (1) | 2021.08.08 |