如何在PyQt4进程中使用多核python?

时间:2013-01-19 02:02:50

标签: python pyqt4 multiprocessing signals-slots

我在pyqt4中编写一个应用程序,它必须读入并解析许多xml文件。完成单线程需要一段时间来完成所有解析并使成千上万的python对象对应于传入的xml。我已经分析了代码,据我所知,它是计算,而不是I / O,绑定。

我想将应用程序转换为多核模型以使用worker-farm模型(?python中的Process.Pool)来分散负载。

但是,我还希望能够从工作人员发出信号来更新gui。

从我到目前为止看来,QThread不具备多核功能(因为它在一个内核上循环)但我需要QThread来做Signal,所以基本上我不能这样做。

我或许可以安排不需要来自工人的信号,只能来自农民,这可能意味着我可以继续,但后来我想知道:我可以将一个python对象列表从一个进程返回到另一个进程?

1 个答案:

答案 0 :(得分:5)

  • 产生QThread。
  • QThread可以将任务分配给多处理池。你可能会 使用具有回调参数的pool.apply_async()
  • 回调参数允许您指定一个函数 在目标函数完成时调用。
  • 回调在QThread中运行,并发送返回值 目标函数是唯一的参数。
  • 每次回调函数运行时,您都可以将GUI更新为 表明进展情况。