1

multiprocessingPythonモジュールがjoin()親プロセスの子プロセスのシャットダウンを呼び出して待機しようとするのを防ぐ方法はありますか?

2010-02-18 10:58:34,750 INFO calling join() for process procRx1

最終的に試行をあきらめる前に数秒待つのではなく、送信したプロセスをSIGTERMできるだけ早く終了する(つまり「高速で失敗する」)ようにしjoinます。

明確化:私は「子プロセス」の束を作成する「中央プロセス」を持っています。プロセスツリー全体を停止するために、任意のプロセスからの「SIGTERM」シグナルをクリーンに処理する方法を探しています。

4

3 に答える 3

0

明示的に使用しようとしましたProcess.terminateか?

于 2010-02-18T21:01:30.413 に答える
0

サブプロセスのフラグを設定するProcess.daemon = Falseことは、あなたが望むものかもしれません:

プロセスデーモン:

プロセスのデーモン フラグ、ブール値。これは、start() が呼び出される前に設定する必要があります。
初期値は、作成プロセスから継承されます。
プロセスが終了すると、すべてのデーモンの子プロセスを終了しようとします。

デーモンプロセスは子プロセスを作成できないことに注意してください。そうしないと、親プロセスが終了したときにデーモンプロセスが終了すると、デーモンプロセスはその子プロセスを孤立したままにしてしまいます。さらに、これらは Unix のデーモンやサービスではなく、通常のプロセスであり、非デーモン プロセスが終了した場合に終了します (結合されません)。

于 2010-02-19T18:02:06.653 に答える
0

次のように、タイムアウト (1 秒?) を指定してループに参加し、スレッドがまだ生きているかどうかを確認できます。

while True:
  a_thread.join(1)
  if not a_thread.isAlive(): break

a_threadwill tr break​​igger句の終了。

于 2010-02-18T22:58:25.980 に答える