我有一個GUI,通過點擊一個按鈕,我必須開始一個大計算。Miltiprocessing vs multithreading
我使用QtDesigner與Python 2.7
在開始的時候,我有而大計算正在我的GUI沒有響應的問題。
我解決了這個使用線程模塊:
class myMainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
#rest of the code here
class heavyCalculations(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
#rest of the code here
我懷疑現在是:比方說,我要開始4次計算,我想用所有4個內核的我的電腦前工作的時間。爲此我需要多處理,但是我應該怎麼做以避免我的GUI變得無法響應,但同時要按時使用4個內核?
據我所知,如果我開始一個新的進程爲每個繁重的計算,它確實並行工作,但我的GUI變得無法響應。
如果我啓動4個線程,它也可以工作,GUI不受影響,但這不是真正的並行。
任何幫助?
爲什麼你認爲線程不平行? – Zaffy 2014-10-18 20:55:05
線程並不平行,處理器從一個跳轉到另一個跳轉非常快,假裝是「並行」的,但如果我們在4個進程按時處理4個內核時並行調用並行處理器,則處理器並不是並行處理。這是不一樣的。 – codeKiller 2014-10-18 20:58:06
我可以通過多線程使所有內核達到100%,所以我會爭辯說一個進程!=一個內核 – Zaffy 2014-10-18 21:04:20