1

我正在用 pyqt4 编写一个应用程序,它必须读取并解析大量的 xml 文件。完成单线程需要一段时间来完成所有解析并使数千个 python 对象与传入的 xml 相对应。我已经对代码进行了概要分析,据我所知,它是计算绑定的,而不是 I/O。

我想将应用程序转换为多核模型以分散负载,使用工人农场模型(python 中的?Process.Pool)。

但是,我也希望能够从工作人员那里发出进度信号以更新 gui。

到目前为止,在我看来,QThread 不支持多核(因为它在一个核心上循环),但我需要 QThread 来执行 Signal,所以基本上我不能这样做。

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

4

1 回答 1

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