numpy和全局解释器L

2024-05-23 13:37:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我将要编写一些计算密集型的Python代码,这些代码几乎肯定会在numpy的线性代数函数中花费大部分时间。

目前的问题是embarrassingly parallel。长话短说,对我来说最简单的方法就是使用多个线程。几乎可以肯定的是,主要的障碍将是全局解释器锁(GIL)。

为了帮助设计这个模型,有一个心理模型是有用的,对于这个模型,可以期望numpy操作在其持续时间内释放GIL。为此,我非常感谢任何经验法则、注意事项、指针等

如果重要的话,我将在Linux上使用64位Python2.7.1,使用numpy1.5.1和scipy0.9.0rc2,使用Intel MKL 10.3.1构建。


Tags: 方法函数代码模型numpyparallel时间全局
3条回答

您可能会在the official wiki上找到有关NumPy和并行编程的所有问题的答案。

另外,请看this recipe page——它包含了如何在多线程中使用NumPy的示例代码。

相当多的numpy例程释放GIL,因此它们可以在线程(info)中高效并行。也许你不需要做什么特别的事!

您可以使用this question来查找所需的例程是否在释放GIL的例程中。简而言之,在源代码中搜索ALLOW_THREADSnogil

(还要注意,MKL能够为一个例程使用多个线程,所以这是获得并行性的另一个简单方法,尽管可能不是最快的方法)。

令人尴尬的平行?努比?听起来像是PyCUDAPyOpenCL的好人选。

相关问题 更多 >