Create a Queue list in the parent, from a few to each worker at creation time. Each employee will perform tasks from one of his queues, withdrawal to another queue.
import logging, multiprocessing def myproc(arg): return arg*2 def worker(qlist): logger = multiprocessing.get_logger() logger.info('start') while True: job = qlist[0].get() logger.info('got %s', job) if job is None: logger.info('exiting') return qlist[1].put( myproc(job) ) logger = multiprocessing.log_to_stderr( level=logging.INFO, ) logger.info('setup') numProcs = 3 queueList = [ multiprocessing.Queue() for i in xrange(numProcs) ]
Execution Example:
[INFO/MainProcess] setup [INFO/worker] child process calling self.run() [INFO/worker] start [INFO/worker] got 0 [INFO/worker] got 1 [INFO/worker] got 2 [INFO/worker] got None [INFO/worker] exiting [INFO/worker] process shutting down [INFO/worker] process exiting with exitcode 0 [INFO/MainProcess] done [INFO/MainProcess] process shutting down
source share