大锤python日记(多进程中Queue的使用)

133 阅读1分钟

在多进程编程中,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为止。

通过这种方式,就实现了不同进程之间的数据传递。