In [1]:
import joblib
from joblib import Parallel, delayed
In [48]:
a = range(10000000)
In [49]:
def foo(var):
return (((var / 2.0) * 1.5) + 23.42) * (0.00000005 * var)
In [50]:
def batch_foo(vars):
results = []
for var in vars:
results.append(foo(var))
In [51]:
# %%time # Wall time: 5.12 s
# results = batch_foo(a)
In [52]:
p = Parallel(n_jobs=3, verbose=10, batch_size=len(a)/10)
In [42]:
def partition(lst, n):
division = len(lst) / float(n)
return [ lst[int(round(division * i)): int(round(division * (i + 1)))] for i in xrange(n) ]
In [54]:
def yield_partition(lst, n):
division = len(lst) / float(n)
for i in xrange(n):
yield lst[int(round(division * i)): int(round(division * (i + 1)))]
In [53]:
# results = p(delayed(batch_foo)(chunk) for chunk in partition(a, 3))
# [Parallel(n_jobs=3)]: Done 3 out of 3 | elapsed: 28.3s finished
results = p(delayed(batch_foo)(chunk) for chunk in partition(a, 3))
In [58]:
res = Parallel(n_jobs=3,
verbose=10)(delayed(batch_foo)(chunk) for chunk in partition(a, 3))
In [59]:
res = Parallel(n_jobs=3,
verbose=10,
backend='threading')(delayed(batch_foo)(chunk) for chunk in partition(a, 3))
In [ ]: