After having read a similar problem(Executing same Python program with different arguments in parallel) posed by some user at SO, I tried my own code for launching a python program with different argument in different cores. However I am running into trouble. My main problem here is, my function takes 11 arguments and when I provide those arguments in the form of a list, it says I am passing only one argument.
from main_program import sliding_solver
from multiprocessing import Pool
import glob,shutil
from const_for_drdo_adaptive_split import *
#The file- const_for_drdo_adaptive defines all the parameters for used in this file
C1=[-5,-2.5,0,2.5,5];spr1=2.5;LR1=[10,20,30,30,30]
C2=[-4,-3,-2,-1,0,1,2,3,4];spr2=1;LR2=[30,40,50,50,50]
C3=[-4,-2,0,2,4];spr3=2;LR3=[40,50,60,60,60]
par=[[spr1,LR1,C1],[spr2,LR2,C2],[spr3,LR3,C3]]
#0,x0,1e-2,T,tim,So,C,spr,LR,num,param
init_cond=[]
for i in range(len(par)):
theta11=np.zeros(5*len(par[i][2])**num)
x0=np.concatenate((x10,theta11),axis=0) #x10 is an array of 9 elements
init_cond.append(x0)
#theta1=np.zeros(5*len(C)**num)
#x0=np.concatenate((x10,theta1),axis=0 )
print x0
arg=[[0,init_cond[0],1e-2,T,tim,So,C1,spr1,LR1,num,param],[0,init_cond[1],1e-2,T,tim,So,C2,spr2,LR2,num,param],[0,init_cond[2],1e-2,T,tim,So,C3,spr3,LR3,num,param]]
if __name__=='__main__':
pool=Pool(4)
results=pool.map(sliding_solver,zip(arg[0],arg[1],arg[2]))
for file in glob.glob("*_"+str(par[i][0])+"*"):
shutil.move(file,"results")
I wish to know how can I pass three different instances of 11 arguments to my function and launch it in different cores parallely. Kindly help. Thanks in advance!
[ 0.5 0. 0. ..., 0. 0. 0. ]
Traceback (most recent call last):
File "parallel_adaptive_split.py", line 23, in <module>
results=pool.map(sliding_solver,zip(arg[0],arg[1],arg[2]))
File "/usr/lib/python2.7/multiprocessing/pool.py", line 251, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/lib/python2.7/multiprocessing/pool.py", line 567, in get
raise self._value
TypeError: sliding_solver() takes exactly 11 arguments (1 given)