使用Python实现队列

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

了解‘生产者/消费者’模型

在餐馆吃饭时,厨师做完一道菜后就会把菜从传菜递出去,然后继续做下一道菜。厨师不需要关心顾客是不是已经把菜吃完了。如果厨师做菜的速度大于顾客拿菜的速度,那么就会有越来越多的菜堆在传菜窗口。如果顾客拿菜的速度大于厨师做菜的速度,那么传菜窗口始终都是空的,来一道菜就会立刻被拿走。

在程序开发中,这就是一个典型的“生产者/消费者”模型:厨师是生产者,负责生产;顾客是消费者,负责消费。厨师和顾客各做各的。传菜口就是队列,它把生产者和消费者联系在一起。

实例描述:

使用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))       #把两个数字用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

要不要长胖_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值