Advertisement
nux95

ThreadDistr - distribute function to threads

Jun 22nd, 2011
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.89 KB | None | 0 0
  1. # just a quick and dirty function to 
  2. # distribute an iterable  to a number of # threads
  3.  
  4. from threading import Thread
  5.  
  6. def ThreadDistr(data, tCount, performer, args = [], kwargs = {}, doStart = True, doJoin = True, timeout = None):
  7.   # performer must take at least one argument
  8.  
  9.   def seperateData():
  10.     for i in xrange(int(len(data) / float(tCount)) + 1):
  11.       slice_start = i * tCount
  12.  
  13.       if i == len(data) - 1:
  14.         slice_end = len(data) - 1
  15.       else:
  16.         slice_end = (i + 1) * tCount
  17.  
  18.       yield data[slice_start:slice_end]
  19.  
  20.  
  21.   data = tuple(seperateData())
  22.  
  23.   threads = []
  24.   for e in data:
  25.     t = Thread(target = performer, args = [e] + args, kwargs = kwargs)
  26.  
  27.     if doStart:
  28.       t.start()
  29.  
  30.     threads.append(t)
  31.  
  32.   if doJoin:
  33.     for t in threads:
  34.       t.join(timeout)
  35.  
  36.   return threads
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement