我有一个函数f()
,它遍历二维数组,并将另一个函数g()
应用于数组的每个元素,并存储结果。 g()
从一个数组元素到另一个数组元素的评估是完全独立的。我想加快速度,因为计算g()
很快,但是对大型数组的所有元素进行计算却很慢。
我不熟悉python中的多处理,有人可以提供解决此类问题的最佳方法吗?代码看起来像这样:
def g(x):
'''some function that is dependent on other python packages'''
return other_func(x)
def f(arr):
N = arr.shape[0]
M = arr.shape[1]
results = np.zeros_like(arr)
for i in range(N):
for j in range(M):
results[i,j] = g(arr[i,j])
return results
* update:我们可以假设M = N = 100且对g()
的求值花费几秒钟,t <10,因此当前的总运行时间为t * 100 ^ 2。我的机器是配备2.6Ghz i7和16gb ram的macbook pro