찾다

 >  Q&A  >  본문

python3 使用 multiprocessing.Pool时,子进程未启动

天蓬老师天蓬老师2768일 전516

모든 응답(2)나는 대답할 것이다

  • 怪我咯

    怪我咯2017-04-17 17:00:10

    A 코드 p.close() 뒤에 p.join()을 추가하면 동일합니다.

    또는 B 코드 p_fi.start() 앞에 p_fi.daemon = p_se.daemon = p_th.daemon = True를 추가해도 동일합니다(현재 B는 코드도 제대로 작동하지 않습니다).

    간단히 말하면, 코드 A는 하위 프로세스가 완료될 때까지 기다리지 않고 기본 프로세스를 종료하는 반면, 코드 B는 기본 프로세스를 종료하기 전에 하위 프로세스가 완료될 때까지 기다립니다.

    <시간>

    전체 코드를 업데이트한 후:

    dict_init_queue = 대기열()
    

    다음으로 변경해야 합니다:

    다중 처리 가져오기 관리자의
    
    관리자 = 관리자()
    dict_init_queue = 관리자.큐()
    

    그렇지 않으면 프로세스 간에 대기열을 공유할 수 없습니다.

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 17:00:10

    위 사람 말이 맞네요. 종료 후 실행이 끝날 때까지 기다리는 조인이 있어야 합니다.

    프로젝트 코드 https://github.com/shazow/workerpool을 읽고 나서야 알게 되었습니다

    회신하다
    0
  • 취소회신하다