Python多处理池启动多个GUI

时间:2014-06-05 16:36:57

标签: python user-interface import pyqt multiprocessing

全部, 在我的GUI中,我使用多处理来运行一个函数。但是池启动了多个GUI。 我已经读过人们在他们的代码中添加if __name__ == '__main__':并且似​​乎有效。 但我不知道这个技巧是否适用于我的情况,以及我必须插入此代码的地方。 函数run_func()由GUI中的按钮启动。 如何阻止这个多重启动?

我还有第二个问题: 如何在exec结束时不进行设置?

非常感谢!

@pyqtSlot()
    def run_func():
        run="""
        import os
        import sys
        from setup import *
        print('toto')
        print('titi')
        """
        from multiprocessing import Pool   
        pool = Pool(processes=4)          
        asyncResult = pool.apply_async(exec(run),{},{}),range(1)

1 个答案:

答案 0 :(得分:0)

您没有为您的问题提供太多背景信息。无论如何,我做了一个测试,从from setup import *字符串中删除run部分。所有运行良好,因此,不是PyQT问题,更像是在某些时候你再次执行运行GUI的模块/函数。

对于第一个问题:

我建议您使用调试器并在启动GUI的位置设置一些断点,然后您可以使用调用堆栈来调用您的GUI。这样,yuo就会知道“主要”代码块的位置,即使它确实是必要的。

由于调试器使用带有代码内断点的pdb(记住你在多进程中运行),请输入以下行:

import pdb; pdb.set_trace()

你想要设置一个断点。

关于第二个问题:

请参阅How do I unload (reload) a Python module?