【发布时间】:2016-11-06 14:51:47
【问题描述】:
我有一个多维数组 (result),应该由一些嵌套循环填充。函数fun() 是一个复杂且耗时的函数。我想以并行方式填充我的数组元素,这样我就可以使用我系统的所有处理能力。
代码如下:
import numpy as np
def fun(x, y, z):
# time-consuming computation...
# ...
return output
dim1 = 10
dim2 = 20
dim3 = 30
result = np.zeros([dim1, dim2, dim3])
for i in xrange(dim1):
for j in xrange(dim2):
for k in xrange(dim3):
result[i, j, k] = fun(i, j, k)
我的问题是“我可以并行化这段代码吗?如果可以,如何?”
我使用的是 Windows 10 64 位和 python 2.7。
如果可以的话,请通过更改我的代码来提供您的解决方案。 谢谢!
【问题讨论】:
-
最大的问题是 f 的每次调用是独立的,还是后续调用取决于先前调用的结果。如果他们是独立的,那么 J. Maria 的答案将会奏效。如果不是,它要么更复杂,要么不可能。
-
@neil fun() 的每次调用都独立于先前的调用,但在实际实现中尺寸大于 10、20、30,我不想拆分我的索引。我想要一个更有活力的解决方案。
标签: python parallel-processing nested-loops multiprocess