Parallelization with PyParz

No arguments

import pyParz
import numpy as np
import time
indata=np.arange(0,1000,1)
indata=np.arange(0,100,1)

def par_func1(x):
  time.sleep(.1)
  return(x**2)
start = time.time()
res=[par_func1(x) for x in indata]
end = time.time()
print('without par',end - start)
start = time.time()
res=pyParz.foreach(indata,par_func1,args=None)
end = time.time()
print('with par',end - start)

Out:

without par 10.242643117904663
with par 2.573866128921509

With Arguments

import pyParz
import numpy as np
import time
indata=np.arange(0,1000,1)
indata2=1

def par_func2(args):
x,y=args
time.sleep(.1)
return(x**2+y)
start = time.time()
res=[par_func2([x,indata2]) for x in indata]
end = time.time()
print('without par',end - start)
start = time.time()
res2=pyParz.foreach(indata,par_func2,args=[indata2])
end = time.time()
print('with par',end - start)

Out:

without par 10.232956886291504
with par 2.5586397647857666