我有一些函数f(x,y)
,我用numpy.vectorize
命令对其进行了矢量化。我已经制作了一些x和y的网格值,我希望对其进行评估。我的程序看起来像这样:
from numpy import vectorize,meshgrid, linspace
@vectorize
def f(x,y):
pass
x = linspace(0,10)
y = linspace(0,10)
X, Y = meshgrid(x, y)
Z = f(X,Y)
当我在评估时查看系统监视器(例如在Ubuntu上使用htop
)时,我看到只使用了一个核心。在这种计算中获得大部分系统的选项有哪些?
答案 0 :(得分:3)
使用numpy.vectorize
通常不是一个好主意。它没有任何并行化,事实上,由于它的工作方式,性能通常都不是很好(如in its documentation所述)。因此,您需要在内部对f(x,y)
函数进行向量化,或者将其作为C或C ++或Fortran等模块实现。
如果你想在Python中真正使用多个核心,最好的办法是使用threading
模块(如果你的功能是用C实现的话),或者multiprocessing
如果你想尝试运行原生的Python(包括NumPy)。