并行循环调用多个函数

时间:2016-04-06 10:54:30

标签: python multithreading multiprocessing

我正在尝试并行化python中耗时的for循环。 for循环生成一些索引,然后有嵌套的for循环,并调用一个函数,并使用函数返回值更新数组。所以,我的天真代码实现如下:

import numpy as np
N = 256
max_k = 32
g = np.zeros(N, N, N)
k = np.zeros(N, N, N)

# These will be used to generate some indexes and sampling points
ix = np.linspace(-1, 1, N)
iy = np.linspace(-1, 1, N)
iz = np.linspace(-1, 1, N)

kx = np.linspace(-max_k, max_k, N)
ky = np.linspace(-max_k, max_k, N)
kz = np.linspace(-max_k, max_k, N)

for idz, zi, zf in zip(count(), iz, kz):
    for idy, yi, yf in zip(count(), iy, ky):
        for idx, xi, xf in zip(count(), ix, kx):
            g[idx, idy, idz] = func1([[xi, yi, zi]])
            k[idx, idy, idz] = func2([[xf, yf, zf]])

所以基本上我有这些嵌套循环,我调用两个函数并更新数组中的值。我看到有一个multiprocessing Pool类,但是我无法弄清楚如何映射我的循环体以使其与它一起工作,特别是如何生成这些索引以便能够将它与Pool map方法一起使用。

0 个答案:

没有答案