我有一个函数,它接受两个参数:
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))
。