diff --git a/parmap.py b/parmap.py index f3b36de7eaa4124e1f88140e74b1eb5534ba0953..a19c36d88d12588b4298a5c0e24b5179f2bd921e 100644 --- a/parmap.py +++ b/parmap.py @@ -33,7 +33,8 @@ def worker_fun(f, q_in, q_out): break q_out.put((i, [ f(x) for x in chunk ])) -def parmap(f, X, nprocs = None, chunksize = 1, chunks_in_flight = None): +def parmap(f, X, nprocs = None, chunksize = 1, chunks_in_flight = None, + inOrder = True): if nprocs is None: nprocs = multiprocessing.cpu_count() @@ -70,6 +71,12 @@ def parmap(f, X, nprocs = None, chunksize = 1, chunks_in_flight = None): jobs = val continue + if not inOrder: + chunk_index += 1 + cont.release() + yield val + continue + ret[i] = val while chunk_index in ret: val = ret[chunk_index]