簡體   English   中英

numpy 和全局解釋器鎖

[英]numpy and Global Interpreter Lock

我即將編寫一些計算密集型 Python 代碼,這些代碼幾乎肯定會在numpy的線性代數函數中花費大部分時間。

手頭的問題令人尷尬地平行 長話短說,對我來說利用它的最簡單方法是使用多個線程。 主要的障礙幾乎肯定是全局口譯員鎖(GIL)。

為了幫助設計這一點,有一個心理 model 會很有用, numpy操作可以預期在其持續時間內釋放 GIL。 為此,我將不勝感激任何經驗法則、注意事項、指針等。

In case it matters, I'm using 64-bit Python 2.7.1 on Linux, with numpy 1.5.1 and scipy 0.9.0rc2, built with Intel MKL 10.3.1.

相當多的 numpy 例程發布了 GIL,因此它們可以在線程中有效地並行( 信息)。 也許你不需要做任何特別的事情!

您可以使用這個問題來查找您需要的例程是否在發布 GIL 的例程中。 簡而言之,在源代碼中搜索ALLOW_THREADSnogil

(另請注意,MKL 能夠在例程中使用多個線程,因此這是獲得並行性的另一種簡單方法,盡管可能不是最快的方法)。

您可能會在官方 wiki上找到有關 NumPy 和並行編程的所有問題的答案。

另外,請查看此配方頁面——它包含有關如何在多線程中使用 NumPy 的示例代碼。

尷尬的平行? Numpy? 聽起來像是PyCUDAPyOpenCL的不錯選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM