在多进程编程中,Queue
是一种常用的同步机制,可以用来在不同的进程之间传递数据。以下是一个使用Queue
的简单案例:
import time
import multiprocessing
def producer(queue):
for i in range(5):
print("Producing item {}".format(i))
queue.put(i)
time.sleep(1)
def consumer(queue):
while True:
item = queue.get()
if item is None:
break
print("Consuming item {}".format(item))
if __name__ == "__main__":
# 创建一个队列
queue = multiprocessing.Queue()
# 创建生产者进程并启动
p1 = multiprocessing.Process(target=producer, args=(queue,))
p1.start()
# 创建消费者进程并启动
p2 = multiprocessing.Process(target=consumer, args=(queue,))
p2.start()
# 等待生产者进程结束
p1.join()
# 向队列中添加一个特殊标记,表示没有更多的数据了
queue.put(None)
# 等待消费者进程结束
p2.join()
上述代码中,首先创建了一个Queue对象,然后分别创建生产者和消费者两个进程。
生产者进程在每隔一秒钟往队列中添加一个数字,消费者进程则不断地从队列中取出数字进行处理,直到取到特殊标记None为止。
通过这种方式,就实现了不同进程之间的数据传递。