저는 파이썬과 멀티 프로세싱 모듈에 익숙하지 않습니다. 내 문제를 해결하기 위해 수행하려는 작업을 단순화 된 버전으로 만들었습니다. 문제는 변수가 함수 밖에서 호출 될 때 업데이트되지 않는 것인데, 함수가 추가되면/작업자 프로세스가됩니다.멀티 프로세싱 풀을 사용하여 목록 추가하기
연구를 마친 후에 대기열과 관련이 있다고 생각 했습니까? 그러나, 대기열은 각각의 목록이 독립적으로 추가 될 수 있기 때문에 내 상황에서 필요하다고 생각하지 않는 프로세스간에 메모리를 공유하는 것에 대해 더 많은 것으로 믿습니다. 나는 위의 코드를 실행하면
from multiprocessing import Pool
def build(array):
array.append("hello")
return array
if __name__== '__main__':
x=["yo","sup"]
y=["blah", "blah"]
z=["apple","banana"]
w=["cats", "dogs"]
p=Pool(4)
p.map(build,[x,y,z,w])
p.close()
p.join()
print x, y, z, w
는 단순히 각 목록에 "안녕하세요"를 추가하지 않고 전가로 w X, Y, Z를 반환하고 그 이유를 알아낼 수 없습니다. print 문을 함수의 끝에 넣으면 빌드이 추가 목록을 출력한다는 것을 알고 있습니다. 나는 또한 내가 할 수있는 것을 깨닫게 다음
이results = p.map(build,[x,y,z,w])
print results
하지만, 내 실제 프로젝트에 나중에 승 X, Y, Z를 활용해야하고 내가 목록을 가져올 수 결과를 지수로하지를 선호 찾고. 어쨌든 목록에 만들어진 변경 사항을 말하자면, 말하자면, 작업자 프로세스 외부에 있습니까?
있어 당신을 감사 변경! – user129818