class ThreadPool(object): def __init__(self, workers=10): self.queue = Queue() self.workers = [] self.tasks = [] for worker in xrange(workers): self.workers.append(Worker(self.queue)) def add(self, ident, func, args=None, kwargs=None): if args is None: args = () if kwargs is None: kwargs = {} task = (ident, func, args, kwargs) self.tasks.append(ident) self.queue.put_nowait(task) def join(self): for worker in self.workers: worker.start() results = defaultdict(list) for worker in self.workers: worker.join() for k, v in iteritems(worker.results): results[k].extend(v) return results
def __init__(self, workers=10): self.queue = Queue() self.workers = [] self.tasks = [] for worker in xrange(workers): self.workers.append(Worker(self.queue))