파이썬 다중 처리를 사용하는 프로그램이 있습니다. 주 프로그램에서 생성 된 모든 프로세스가 완료 될 수 있지만 주 프로그램은 항상 반환 값을 기다리고 중지 할 수 없음을 발견했습니다. 아무도 나 에게이 문제를 해결하는 방법에 대한 몇 가지 제안을 줄 수 있습니까? 다음 프로세스가 파이썬 다중 처리 풀에서 멈출 수 없습니다.
코드 단편
입니다메인 프로그램 : I는 모든 "서브 기능을 수행"출력을 볼 수
# doing some other jobs
result = {.....} # a large dictionary
print 'done with sub functions'
return result # if I change it to "return 1", it can finish successfully
workers = multiprocessing.Pool(4)
args = [arg1, arg2, arg3, arg4]
results = workers.map(subfunc, args)
print "we are in main functions "
subfunc (* ARG) main에서 생성 된 프로세스이지만 "우리는 주요 기능에 있습니다"출력이 없습니다. 아무도 내가 문제를 알 수있게 도와 줄 수 있니?
결과에 길이가 맞는지 테스트 할 수 있습니까? Mayhap이 동작은 결코 루프를 실행하지 않기 때문입니다. – mklauber
결과 사전에 재귀 참조가있어 피클로 만드는 것이 완료되지 않았을 수 있습니다. 피클이나 json으로 stdout에 쓰십시오. – j13r
그게 바로 지금 내가 한 일이야. – hanqiang