파이썬
파이썬) Multiprocessing Pool 함수 인자 여러개 일 때
이소금
2021. 9. 13. 01:03
반응형
안녕하세요!!
오늘은 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()
이렇게 해결하시면 되겠습니다.
모두 해피코딩하세요!!!
반응형