如何在Python中使用多处理队列?

我在试图了解多处理队列如何在python上工作以及如何实现它时遇到了很多麻烦。 比方说,我有两个Python模块,从共享文件访问数据,让我们称这两个模块作家和读者。 我的计划是让读写器都将请求放入两个单独的多处理队列中,然后让第三个进程在一个循环中popup这些请求并执行。

我的主要问题是,我真的不知道如何正确地实现multiprocessing.queue,你不能真正实例化每个进程的对象,因为它们将是单独的队列,你如何确保所有进程与共享队列相关(或在这种情况下,队列)

我的主要问题是,我真的不知道如何正确地实现multiprocessing.queue,你不能真正实例化每个进程的对象,因为它们将是单独的队列,你如何确保所有进程与共享队列相关(或在这种情况下,队列)

这是读者和作者共享单个队列的简单例子…作者向读者发送一串整数, 当作者用完数字时,会发送“DONE”,让读者知道跳出读取循环。

from multiprocessing import Process from queue import Queue import time def reader(queue): ## Read from the queue while True: msg = queue.get() # Read from the queue and do nothing if (msg == 'DONE'): break def writer(count, queue): ## Write to the queue for ii in xrange(0, count): queue.put(ii) # Write 'count' numbers into the queue queue.put('DONE') if __name__=='__main__': for count in [10**4, 10**5, 10**6]: queue = Queue() # reader() reads from queue # writer() writes to queue reader_p = Process(target=reader, args=((queue),)) reader_p.daemon = True reader_p.start() # Launch reader() as a separate python process _start = time.time() writer(count, queue) # Send a lot of stuff to reader() reader_p.join() # Wait for the reader to finish print "Sending %s numbers to Queue() took %s seconds" % (count, (time.time() - _start))