我即將編寫一些計算密集型Python代碼,它幾乎肯定會將大部分時間用在numpy
的線性代數函數中。numpy和全局解釋器鎖
手頭的問題是embarrassingly parallel。長話短說,對我來說,最簡單的方法就是使用多線程。主要障礙幾乎肯定會是全球口譯員鎖定(GIL)。
爲了幫助設計,有一個精神模型是有用的,其中numpy
操作可以期望在其持續時間釋放GIL。爲此,我會很感激任何經驗法則,做什麼和不該做什麼,指針等。
萬一它很重要,我在Linux上使用64位Python 2.7.1,與numpy
1.5.1和scipy
0.9.0rc2,使用英特爾MKL 10.3.1構建。
你有沒有考慮過使用['multiprocessing'](http://docs.python.org/library/multiprocessing.html)lib而不是線程?你不必再爲GIL煩惱了。 – Jeannot 2011-06-01 11:45:13
@Jeannot:我有,謝謝。由於問題的性質,線程是我的第一選擇。如果我無法做到這一點,我會考慮替代方案。 – NPE 2011-06-01 11:51:04