我正在开发一个使用多个流程的应用程序。
每个进程都是由原始的python进程创建的(即,涉及一个级别的分叉)。
为了在子进程死亡的情况下优雅地终止,我希望我的主进程监视每个子进程的状态,例如:
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。
为了从子进程(post-fork)运行GUI线程,是否需要设置一些特殊的东西,或者这是不可能的?
(我知道我可能在一个单独的子进程中运行终止代码,因为进程列表是在fork之前创建的。但是,在主进程中使用该代码可以从设计中更加清晰观点出发
这是不可能的,因为收割过程必须是它希望查询或终止的任何子进程的父进程。)
答案 0 :(得分:0)
我很确定你需要将wx主循环作为主进程并从一个线程中启动多进程内容。因此,您可以混合线程和多处理模块。
查看以下资源: