Python:在pyqt应用中使用多进程
我电脑里有个i7的处理器,为了提高我的pyqt应用在时间计算上的表现,我想使用多进程模块。但是当我在pyqt应用中这样做的时候:
import multiprocessing as multiprocessing
def foo(ii):
print ii
pool = multiprocessing.Pool(8)
pool.map(foo, range(10))
结果是应用生成了8个pyqt的图形界面,这些界面都是第一个主窗口的克隆(总共出现了9个pyqt界面,这显然是不对的,我想要的是并行计算,而不是克隆主界面,哈哈)。
我也试过joblib这个库(http://pythonhosted.org/joblib/),但问题还是一样。
有没有办法在pyqt应用中使用多进程或者joblib模块进行并行计算呢?
谢谢大家的帮助!
3 个回答
1
你是想为pyqt创建多个进程,还是想为你应用的“逻辑”部分添加额外的进程呢?
更直接一点:不要对pyqt这个容器进行多进程处理。如果你想实现并行处理,就在你应用的逻辑部分创建进程,然后把结果返回给你的视图层。
4
如果你在使用Windows系统,使用多进程时会启动新的进程,这些进程会导入你的主模块。为了避免问题,确保把创建图形用户界面的代码放在 if __name__ == '__main__':
这个条件下。
更好的做法是,为了避免在子进程中不必要地导入PyQt,可以创建一个简单的新主模块,像这样:
if __name__ == '__main__':
import old_main_module
old_main_module.main()