Source code for tools.par_utils

import multiprocessing

######################################################################
# Controllers for parallel execution, one per worker.
# Return when a 'None' job (poison pill) is reached.
######################################################################


[docs]class Consumer(multiprocessing.Process): def __init__(self, task_queue, result_queue): multiprocessing.Process.__init__(self) self.task_queue = task_queue self.result_queue = result_queue
[docs] def run(self): proc_name = self.name while True: next_task = self.task_queue.get() if next_task is None: # Poison pill means we should exit break self.result_queue.put(next_task()) return
[docs]class Task(object): def __init__(self, index, func, args): self.index = index self.func = func self.args = args def __call__(self): return self.index, self.func(*self.args)