我有一些用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
),我看到仅使用了一个内核。在这样的计算中,要获得系统的最大收益,有哪些选择? 最佳答案
使用numpy.vectorize
通常不是一个好主意。它没有并行化任何东西,实际上,由于其工作方式,其性能通常甚至都不是很好(如in its documentation所述)。因此,相反,您需要在内部对f(x,y)
函数进行矢量化处理,或者将其实现为C或C ++或Fortran等模块。
如果您想真正地在Python中使用多个内核,最好的选择是如果函数是用C实现的,则使用threading
模块,或者如果您尝试运行本机Python(包括NumPy),则使用multiprocessing
。
关于python - 在多个内核上执行矢量化功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23365871/