다중 처리 함수를 실행하고 어레이에 출력을 저장하려고 시도하지만 그렇게 할 방법을 찾을 수 없습니다. 이것은 내가 지금까지 가지고 무엇을 : 무슨 일이에요파이썬 다중 처리 : 다중 처리 명령에서 배열 검색
resultsAr = []
inputData = [a,b,c,d]#THIS ARRAY CONTAINS DATA
def function(data):
values = [some_Number_1, some_Number_2]
resultsAr.append(values)
print ('Values = ', values) #THIS WORKS - THE CORRECT VALUES ARE PRINTED
print ('resultsAr = ', resultsAr) #WORKS AS WELL
def parallel_run(function, inputData): #a function that runs in multiple processors
cpu_no = 4
if len(inputData) < cpu_no:
cpu_no = len(inputData)
p = multiprocessing.Pool(cpu_no)
p.starmap_async(function, inputData, chunksize=1)
p.close()
p.join()
print ('resultsAr = ', resultsAr) # THIS PRINTS OUT AN EMPTY ARRAY!
parallel_run(function, inputData)
! 하지만 어떻게 결과를 인쇄/액세스 할 수 있습니까? resultsAr가 더 이상리스트가 아니라'MapResult' 인 것처럼 보입니다. (map이 아닌'starmap_async' 함수를 사용해야했습니다. 차이가 있는지 확실하지 않습니다.) – Yair
어떤 Python 버전을 사용하고 있으며 멀티 프로세싱을 어떻게 가져 오나요? 내 문서와 내 로컬 Python 설치 모두'pool.map'이 반복 가능을 반환한다는 것에 동의합니다. (내 컴퓨터에서는 목록입니다) –
'pool.map' 대신'pool.starmap_async'를 사용하고 있습니다 (my 기능). 'starmap_async'가 반복 가능한지에 대한 어떤 증거도 찾을 수 없었습니다. Windows PC에서 파이어 폭스 3.5.1을 anaconda spyder 2.3.8과 함께 사용하고 있습니다. import multiprocessing에 의해 import한다. – Yair