Skip to content

Instantly share code, notes, and snippets.

@ih4cku
Created June 28, 2014 10:53
Show Gist options
  • Save ih4cku/972ce3a7c90ef3ae1d39 to your computer and use it in GitHub Desktop.
Save ih4cku/972ce3a7c90ef3ae1d39 to your computer and use it in GitHub Desktop.
import multiprocessing.dummy as mul
from time import time, sleep
from joblib import Parallel, delayed
def f(x):
sleep(.01)
return x*x
if __name__ == '__main__':
print "-------- testing multiprocessing on ",mul.cpu_count(),"cores----------"
print ""
elements = 10000
t0 = time()
res_for = [f(x) for x in range(elements)]
t00 = time()
pool = mul.Pool(processes=8)
t1 = time()
res_par = pool.map(f, range(elements))
t2 = time()
res_seq = map(f, range(elements))
t3 = time()
res_app = [pool.apply_async(f,(x,)) for x in range(elements)]
res_app = [result.get() for result in res_app]
t4 = time()
res_job = Parallel(n_jobs=8, backend='threading')(delayed(f)(x) for x in range(elements))
t5 = time()
print len(res_for),"elements","for() time",(t00-t0),"s"
print len(res_seq),"elements","map() time",(t3-t2),"s"
print len(res_par),"elements","pool.map() time",(t2-t1),"s"
print len(res_app),"elements","pool.apply_async() time", (t4-t3),"s"
print len(res_job),"elements","joblib.Parallel time", (t5-t4),"s"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment