我试图了解如何在 Python 中使用多处理模块。下面的代码产生了四个进程,并在结果可用时输出。在我看来,必须有更好的方法来从队列中获取结果;一些方法不依赖于计算队列包含的项目数量,而是在项目可用时返回它们,然后在队列为空时优雅地退出。文档说 Queue.empty() 方法不可靠。对于如何使用队列中的结果,是否有更好的选择?
import multiprocessing as mp
import time
def multby4_wq(x, queue):
print "Starting!"
time.sleep(5.0/x)
a = x*4
queue.put(a)
if __name__ == '__main__':
queue1 = mp.Queue()
for i in range(1, 5):
p = mp.Process(target=multbyc_wq, args=(i, queue1))
p.start()
for i in range(1, 5): # This is what I am referring to as counting again
print queue1.get()