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]