【发布时间】:2013-03-09 09:28:09
【问题描述】:
我的计算机中有一个 i7 CPU,为了提高我的 pyqt 应用程序的时间计算性能,我正在尝试使用多处理模块;当我在 pyqt 应用程序中执行以下操作时:
import multiprocessing as multiprocessing
def foo(ii):
print ii
pool = multiprocessing.Pool(8)
pool.map(foo, range(10))
然后应用程序生成 8 个 pyqt GUI,它们是第一个主窗口的克隆(我总共有 9 个 pyqt GUI,这当然是错误的,我想要做的是并行计算并且不克隆主 GUI xD )。
我也试过 joblib 库 (http://pythonhosted.org/joblib/) 但问题是一样的。
有没有办法在 pyqt 应用程序中使用 multiprocessing 或 joblib 模块进行并行计算?
感谢您的帮助
【问题讨论】:
-
你在windows上吗?如果是这样,您是否使用
if __name__ == '__main__'防护来生成 UI?无论如何,我相信您想要的无法实现,因为fork复制了所有线程,也复制了 UI 线程(从而产生了更多的 UI)。您可能应该将并行计算放在“外部”进程中并从 UI 调用它。 -
是的,我在 Windows 上,我对 if name == 'main' 守卫生成 UI xD 一无所知,因为我是 python xD 的新手。好的,我将尝试使用外部进程进行计算,谢谢 :)
标签: python user-interface pyqt multiprocessing