1
我正在pyqt4中編寫一個應用程序,它必須讀入並解析許多xml文件。完成單線程操作需要花費一些時間來完成所有的解析工作,並使數千個python對象與該傳入的xml相對應。我已經剖析了代碼,並且據我所知它是計算,而不是I/O,綁定。如何使用PyQt4進程使用多核python?
我想將應用程序轉換爲多核模型,以使用工人農場模型(?Process.Pool in python)傳播負載。
但是,我也希望能夠通知工人進度更新gui。
從我目前閱讀的內容看來,QThread並非多核能力(因爲它在一個內核上循環),但是我需要QThread來完成Signal,所以基本上我不能這麼做。
我可能會安排不需要來自工人的信號,只有來自農民,這可能意味着我可以繼續,但是然後我想知道:我可以返回一個Python對象列表從一個進程到另一個?
謝謝你。這大概是我對我的「安排不需要」段所想到的,雖然很高興知道它可以工作。多處理會返回我的python對象嗎? – rivimey
多處理池通過[隊列](http://docs.python.org/2/library/multiprocessing.html#multiprocessing.Queue)與子進程通信。通過隊列傳輸的所有東西都被醃製。所以目標函數返回的值必須是可選擇的。以下是[可以醃製的東西]的類型列表(http://docs.python.org/2/library/pickle.html#what-can-be-pickled-and-unpickled)。請注意,它也可以教Python [如何醃製新類型的對象](http://docs.python.org/2/library/pickle.html#pickling-and-unpickling-extension-types)。 – unutbu
所以簡短的答案是,只要返回值是可以選擇的,一切都是好的。 – unutbu