numpy与全局解释器锁
我准备写一些计算量很大的Python代码,这些代码几乎肯定会大部分时间在numpy
的线性代数函数里运行。
现在的问题是,这个任务是属于一种叫做“尴尬的并行”的类型。简单来说,利用这个特性最简单的方法就是使用多个线程。不过,主要的障碍很可能是全局解释器锁(GIL)。
为了帮助设计这个程序,了解哪些numpy
操作在执行时可以释放GIL会很有用。因此,我希望能得到一些经验法则、注意事项、建议等等。
顺便提一下,我在Linux上使用的是64位的Python 2.7.1,numpy
版本是1.5.1,scipy
版本是0.9.0rc2,都是用Intel MKL 10.3.1构建的。