繁体   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