我可以使用多处理从进程运行App.MainLoop吗?

时间:2013-07-15 00:03:03

标签: python wxpython multiprocessing

我正在开发一个使用多个流程的应用程序。

每个进程都是由原始的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之前创建的。但是,在主进程中使用该代码可以从设计中更加清晰观点出发

这是不可能的,因为收割过程必须是它希望查询或终止的任何子进程的父进程。)