了解‘生产者/消费者’模型
在餐馆吃饭时,厨师做完一道菜后就会把菜从传菜递出去,然后继续做下一道菜。厨师不需要关心顾客是不是已经把菜吃完了。如果厨师做菜的速度大于顾客拿菜的速度,那么就会有越来越多的菜堆在传菜窗口。如果顾客拿菜的速度大于厨师做菜的速度,那么传菜窗口始终都是空的,来一道菜就会立刻被拿走。
在程序开发中,这就是一个典型的“生产者/消费者”模型:厨师是生产者,负责生产;顾客是消费者,负责消费。厨师和顾客各做各的。传菜口就是队列,它把生产者和消费者联系在一起。
实例描述:
使用python自带的queue对象来实现队列:
(1)使用python实现一个简单的“生产者/消费者”模型。
(2)使用python的queue对象做信息队列。
在python使用多线程实现生产者与消费者的程序中,可以使用python自带的queue对象来作为生产者与消费者沟通的队列。
在下面代码中,生产者负责产生两个数字,消费者负责把两个数字相加。
import time
import random
from queue import Queue
from threading import Thread
class Producer(Thread): #生产者
def __init__(self,queue):
super().__init__() #显式的调用父类的初始方法
self.queue=queue
def run(self):
while True:
a=random.randint(0,10)
b=random.randint(90,100)
print(f'生产者产生了两个数字:{a},{b}')
self.queue.put((a,b)) #把两个数字用

本文介绍了如何使用Python的queue模块实现生产者/消费者模型。通过实例展示了厨师(生产者)与顾客(消费者)的关系,模拟了在多线程环境中,生产者产生数据并放入队列,消费者从队列取出数据进行处理的过程。生产者每两秒生产一组数,消费者随机时间取数并计算相加,展示了队列在处理异步操作中的作用。
2989

被折叠的 条评论
为什么被折叠?



