据我所知,Python的线程库使用POSIX线程进行线程化,并且它不能在多个核心上运行。那么我们是否有可能使用Open MP为Python线程实现多核线程系统?
答案 0 :(得分:1)
多处理包提供本地和远程并发, 通过使用有效地侧移Global Interpreter Lock 子进程而不是线程。由于这个原因,多处理 模块允许程序员充分利用多个处理器 给定的机器。它可以在Unix和Windows上运行。
答案 1 :(得分:0)
由于Global Interpreter Lock,CPython(“默认”Python实现)未使用多个核心。所以每个Python语句都必须持有该锁。
但是用C语言编写的模块可能会在耗时的操作之前释放解释器锁。即 numpy 这样做:http://wiki.scipy.org/ParallelProgramming
他们有一个方便的例子:
import numpy as np
import math
def f(x):
print x
# This statements hold GIL and cannot be run
# in two parallel threads
y = [1]*10000000
[math.exp(i) for i in y]
def g(x):
print x
# This statements fall to NumPy C code
# than release GIL and can be multithreaded
y = np.ones(10000000)
np.exp(y)
由于OpenMP也是C的工具,我认为这就是你所寻找的。 p>