1)我讀過如果我在python中導入線程模塊,使用這個庫的CPU綁定加載看不到太多好處,因爲GIL強制線程在即使我在多核機器上運行代碼也是如此。如果是這種情況,那麼使用Python的線程庫會使哪些代碼受益? 2)如果線程庫就是這種情況,那麼並行執行CPU密集型任務(例如兩個信號的交叉關聯)是多處理模塊最適合使用的模塊嗎?使用線程/線程模塊的好處python 2.7
爲了使這個更具體一些,讓我們說我想要並行化的任務是以下代碼中的for循環,而我的機器只有12個內核。假設我的模板有〜1000的長度,我的形象有〜2000的長度,我有〜1000點的信號,以通過排序:
import numpy as np
###2-D array of shape (points, signals)
signals = np.load('signals.npy')
###1-D template array for cross correlation
templateSignal = np.load('template.npy')
for s in range(signals.shape[2]):
xcorr = np.correlate(templateSignal, signal[:,s])
你有基準嗎? – 2012-07-19 19:59:40
注意:C擴展可以釋放GIL,但它們不會觸摸Python對象,例如,某些numpy函數會釋放GIL。 – jfs 2012-07-19 20:36:34