0

親プロセスがキューを作成してワーカー プロセスに渡すマルチプロセッシング アプリケーションがあります。すべてのプロセスは、このキューを使用して、ロギングを目的としたキュー ハンドラを作成します。このキューから読み取り、ロギングを行うワーカー プロセスがあります。

ワーカー プロセスは、親が生きているかどうかを継続的にチェックします。問題は、コマンドラインから親プロセスを強制終了すると、1 つを除いてすべてのワーカーが強制終了されることです。ロガー プロセスも終了します。あるプロセスが実行され続ける理由がわかりません。キュー内のロックなどが原因ですか?このシナリオで適切に終了するにはどうすればよいですか? 私は使っている

    sys.exit(0)

終了します。

4

1 に答える 1

0

sys.exit(0)他に機会がない場合にのみ使用します。各スレッド/プロセスをきれいに終了することを常にお勧めします。プロセスにいくつかのwhileループがあります。ですからbreak、そこで終わらせてください。

終了する前に整理します。つまり、ファイル、ソケット、パイプなどの外部リソースのすべてのハンドルを解放します。

これらのハンドルのどこかに、表示される動作の理由がある可能性があります。

于 2013-02-11T08:36:21.700 に答える