2017-11-27 1 views
1

저는 파이썬에서 다중 스레딩을 수행하는 방법, 즉 맵 함수를 사용하여 여러 변수로 내 함수를 호출하는 방법을 알아 내려고합니다.다중 변수 다중 스레딩 및 매핑

내 코드 :

from multiprocessing.dummy import Pool as ThreadPool 
def myFunc(a, b): 
    print(a * b) 

arr = [4, 8, 10, 7, 9] 
arr2 = [2, 1, 3, 4, 2] 

pool = ThreadPool(4) 

results = pool.map(myFunc, arr, arr2) 

pool.close() 
pool.join() 

그것은 pool.map 함수 호출에서 다음과 같은 오류가 발생합니다 : 내가 꽤하지 않습니다

TypeError: '<=' not supported between instances of 'list' and 'int' 

. documentation에서이 작업을 수행 할 수 있어야합니다.

무엇이 누락 되었습니까?

+0

, 파이썬 * 멀티 스레드 *와 * 멀티 프로세스 * (자신의 API를 매우 비슷하지만) 다른 메커니즘을 가지고 조심해야 더 나은 것 같다 – dkato

답변

0

다음은 예입니다. 내장 된 map은 두 개 이상의 반복자를 사용할 수 있지만 pool.map의 경우 두 번째 인수로 하나의 반복자 만 사용할 수 있습니다.

from multiprocessing import Pool 

def myFunc(x): 
    print(x[0] * x[1]) 

arr = [4, 8, 10, 7, 9] 
arr2 =[2, 1, 3, 4, 2] 

if __name__ == '__main__': 

    pool = Pool(4) 
    results = pool.map(myFunc, zip(arr, arr2)) 

    pool.close() 
    pool.join() 

자세한 내용은 다음을 비교하십시오. 파이썬의 멀티 스레딩을 연구하면

https://docs.python.org/3.6/library/multiprocessing.html#multiprocessing.pool.Pool.map https://docs.python.org/3/library/functions.html#map