1

複数のプロセスを利用するアプリを開発しています。

各プロセスは、元の 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 スレッドを実行するために特別に設定する必要があるものはありますか、それとも不可能ですか?

プロセスリストはフォーク前に作成されるため、おそらく終了コードを別のサブプロセスで実行できることは承知しています。ただし、メインプロセスにそのコードを含めると、設計の観点からははるかにクリーンになります。

リープ プロセスは、照会または終了したいサブプロセスの親でなければならないため、これは簡単には不可能です。)

4

1 に答える 1

0

I'm pretty sure you'll need to keep the wx main loop as the main process and start the multiprocess stuff from within a thread. Thus, you get to mix threads and the multiprocessing module.

Check out the following resources:

于 2013-07-15T13:35:05.193 に答える