Welcome, guest | Sign In | My Account | Store | Cart
import threading

def concurrent_map(func, data):
   
"""
    Similar to the bultin function map(). But spawn a thread for each argument
    and apply `func` concurrently.

    Note: unlike map(), we cannot take an iterable argument. `data` should be an
    indexable sequence.
    """


    N
= len(data)
    result
= [None] * N

   
# wrapper to dispose the result in the right slot
   
def task_wrapper(i):
        result
[i] = func(data[i])

    threads
= [threading.Thread(target=task_wrapper, args=(i,)) for i in xrange(N)]
   
for t in threads:
        t
.start()
   
for t in threads:
        t
.join()

   
return result

History