怪我咯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 はサブプロセスの完了を待ってからメインプロセスを終了するという違いです。
完全なコードを更新した後:
リーリーを次のように変更する必要があります:
リーリーそうしないと、プロセス間でキューを共有できません。
怪我咯2017-04-17 17:00:10
上記の人は正しいです。close 後、実行が終了するまで待機する必要があります。
プロジェクトのコードを読んで初めて知りました https://github.com/shazow/workerpool