2011-01-28 34 views
4

私はいくつかのワーカープロセスを作成したいのですが、例外のためにクラッシュした場合、それらを再生成したいと思います。マルチプロセッシングモジュールのis_aliveメソッドを除いて、私はこれを行う方法を見つけることができません。Pythonマルチプロセッシングがクラッシュしたプロセスを再起動しました

これは、実行中のすべてのプロセス(スリープ後)を繰り返し実行し、それらが生きているかどうかを確認する必要があります。これは本質的にはビジーなループですが、私のワーカープロセスのいずれかがクラッシュした場合に私のプログラムを呼び起こす優れた解決策があるかどうかは疑問でした。目が覚めたら、プログラムをクラッシュさせて別のプロセスを起動する例外をログに記録したい。

答えて

2

子プロセスが生存しているかどうかを確認するポーリングは、オーバーヘッドのチェックが少なく、頻繁にチェックする必要がないため、正常に動作するはずです。

この(同様の)質問に対する最初の答えは、Pythonのコード例があります。Multi-server monitor/auto restarter in python

1

あなたは以外に上げる前パイプにメッセージをプッシュtry/exceptブロックであなたのワーカープロセスをラップすることができます。もちろん、ポーリングはこれより悪くはありませんし、簡単です。

1

UNIXシステムの場合は、signal handlerをインストールすることで、メインプログラムに不在の子どもを通知することができます。 signal()、特にSIGCHLDのオペレーティングシステムのドキュメントを参照してください。私は、Windowsが非常に限定されたPOSIXシグナルサポートでSIGCHLDをカバーしているかどうか覚えていないのではないかと心配しています。

関連する問題