複数のプロセスを利用するアプリを開発しています。
各プロセスは、元の python プロセスによって作成されます (つまり、1 レベルの fork が含まれます)。
サブプロセスが終了した場合に正常に終了するために、メインプロセスで各サブプロセスのステータスを監視したいと思います。
while lifeIsGood:
for process in processes:
if not process.is_alive()
lifeIsGood = False
break
sleep(1)
# forcibly reap the children
また、このアプリで wxpython GUI を表示したいと考えています。ただし、メイン プロセスに実行させたいことが原因でApp.MainLoop
、そのプロセスでブロッキング呼び出しを行うことができません。
私が提案した解決策は、分岐後にサブプロセス (サブクラス)App.MainLoop
のスレッドで実行することでした。Process
ただし、これにより GUI がグレイアウトされます (応答しなくなります)。
サブプロセス (フォーク後) から GUI スレッドを実行するために特別に設定する必要があるものはありますか、それとも不可能ですか?
(プロセスリストはフォーク前に作成されるため、おそらく終了コードを別のサブプロセスで実行できることは承知しています。ただし、メインプロセスにそのコードを含めると、設計の観点からははるかにクリーンになります。
リープ プロセスは、照会または終了したいサブプロセスの親でなければならないため、これは簡単には不可能です。)