Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # just a quick and dirty function to
- # distribute an iterable to a number of # threads
- from threading import Thread
- def ThreadDistr(data, tCount, performer, args = [], kwargs = {}, doStart = True, doJoin = True, timeout = None):
- # performer must take at least one argument
- def seperateData():
- for i in xrange(int(len(data) / float(tCount)) + 1):
- slice_start = i * tCount
- if i == len(data) - 1:
- slice_end = len(data) - 1
- else:
- slice_end = (i + 1) * tCount
- yield data[slice_start:slice_end]
- data = tuple(seperateData())
- threads = []
- for e in data:
- t = Thread(target = performer, args = [e] + args, kwargs = kwargs)
- if doStart:
- t.start()
- threads.append(t)
- if doJoin:
- for t in threads:
- t.join(timeout)
- return threads
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement