我在pool.map中使用了两个不同的代码,其中第一个称为Runge-Kutta(术语)积分器
@jit
def rk4(R,U,W):
#timestep h=2.0
X0,Z0=R[0],R[1]
traj = []
for n in range(10):
traj.append([X0,Z0])
#...integration scheme 1...
return traj
这对于pool.map可以正常工作。
第二个使用了Adams-Bashfoth-Moulton PC方案(更不相关的行话):
@jit
def ab4(I,L,U,W):
#timestep h=2.0
traj=[]
#... ini stuff ...
for j in range(t0+1,int(0.5*len(U))):
#...integration scheme 2 ...
if X>L:
break
return traj
由于第二个要求使用第一个进行简短的初始化,因此我编写了一个父函数,该函数依次调用它们:
def integrator(R,L,U,W):
init=rk4(R,U,W)
rest=ab4(init,L,U,W)
return np.asarray(init+rest)
这不适用于pool.map并返回类似“ Ca n't get attribute integrator ....”的信息。
由于存在许多固定参数,因此我会通过以下方式局部调用pool.map:
with Pool(10) as p:
results=p.map(partial(integrator, L=dX*nx,U_xz,W_xz), G_0)
所以我的问题是,如何获得第二个调用其他函数的代码以使其在Pool中正常工作?