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

riv*_*mey 1 python multiprocessing signals-slots pyqt4

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

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

但是,我也希望能够从工人的信号进展中更新gui.

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

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

unu*_*tbu 5

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