我正在寻找针对Python(Scipy,Numpy)的MATLAB parfor的明确答案。
是否有类似于parfor的解决方案?如果没有,创建一个的复杂性是什么?
更新:这是我需要加快速度的典型数值计算代码
import numpy as np
N = 2000
output = np.zeros([N,N])
for i in range(N):
for j in range(N):
output[i,j] = HeavyComputationThatIsThreadSafe(i,j)
繁重的计算功能的一个示例是:
import scipy.optimize
def HeavyComputationThatIsThreadSafe(i,j):
n = i * j
return scipy.optimize.anneal(lambda x: np.sum((x-np.arange(n)**2)), np.random.random((n,1)))[0][0,0]
有许多用于并行计算的Python框架。我碰巧最喜欢的一个是IPython,但是我对其他任何一个都不了解。在IPython中,parfor的一个类似物将是快速简便的并行性文档client.MultiEngineClient.map()
中的一个或多个其他构造。