在for循环中使用mutiprocessing.Pool作为函数

时间:2017-09-20 07:15:10

标签: python function for-loop python-multiprocessing

我有一个函数,它接受两个参数:

def vol(vor,p):
    return some_value 

我使用for循环调用该函数:

infile = '/home/test.dat'
xx = np.genfromtxt(infile)
points = xx[:,0:3] # array with shape (4000,3)
galvor = Voronoi(points) 

ngal = np.shape(xx)[0] # just an integer
galden = np.zeros((ngal,)) 

for i in range(ngal):
    galden[i]= 1./vol(galvor,i)

由于这需要花费很多时间,我尝试以这种方式使用多处理池:

if __name__ == '__main__':
    pool = Pool(processes = 8)  # adjust to number of cores
    galden[i] = pool.map(vol, (galvor,range(ngal)))

我收到错误:

TypeError: vol() takes exactly 2 arguments (1 given)

但是正如你所看到的,我给了函数两个参数,即(galvor,range(ngal))。 由于galvor不是可迭代的,因此我无法使用zip(galvor,range(ngal))

0 个答案:

没有答案