在父级中创建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) ]
# prefill with 3 jobs
for num in range(3):
queueList[0].put(num)
# signal end of jobs
queueList[0].put(None)
worker_p = multiprocessing.Process(
target=worker, args=( [queueList[0], queueList[1]], ),
name='worker',
)
worker_p.start()
worker_p.join()
logger.info('done')
示例运行:
^{2}$