코드를 디버깅하는 데 밤새도록 비용이 들었습니다. 결국이 까다로운 문제를 발견했습니다. 아래 코드를 살펴보십시오. 파이썬 멀티 프로세싱에서 콜백 함수는 어떻게 작동합니까?
from multiprocessing import Pool
def myfunc(x):
return [i for i in range(x)]
pool=Pool()
A=[]
r = pool.map_async(myfunc, (1,2), callback=A.extend)
r.wait()
은 내가
A=[0,0,1]
을 얻을 것이라고 생각하지만, 출력은
A=[[0],[0,1]]
입니다. 내가
A=[]
을 가지고 있다면,
A.extend([0])
과
A.extend([0,1])
이 나를
A=[0,0,1]
으로 줄 것이기 때문에 이것은 나에게 의미가 없습니다. 아마도 콜백은 다른 방식으로 작동합니다. 그래서 내 질문은
[[0],[0,1]]
대신
A=[0,0,1]
을 얻는 방법입니까? 모든 의견을 미리 보내 주셔서 감사합니다.
사용중인 운영 체제 및 Python 버전은 무엇입니까? –