yield消费者模型

本文通过一个案例展示了Python的yield生成器如何实现内存优化。生成器`producer`不断生产包子,而`consumer`函数模拟小明吃包子的过程。通过send(None)启动生成器并使用for循环传递数值,实现生产者消费者同步,有效节约内存资源。
摘要由CSDN通过智能技术生成

python yield生成器,生成一个对象
<generator object producer at 0x7f472eb01430>
可以节约很多内存
一个经典的案例的

def producer():
    while True:
        count=yield
        print(f"生产了第{count}包子")

def consuer(num):
    print(f"小明吃了第{num}个包子")

if __name__=='__main__':
    p=producer()
    p.send(None)
    for i in range(1,21):
        p.send(i)
        consuer(i)

运行结果

生产了第1包子
小明吃了第1个包子
生产了第2包子
小明吃了第2个包子
生产了第3包子
小明吃了第3个包子
生产了第4包子
小明吃了第4个包子
生产了第5包子
小明吃了第5个包子
生产了第6包子
小明吃了第6个包子
生产了第7包子
小明吃了第7个包子
生产了第8包子
小明吃了第8个包子
生产了第9包子
小明吃了第9个包子
生产了第10包子
小明吃了第10个包子
生产了第11包子
小明吃了第11个包子
生产了第12包子
小明吃了第12个包子
生产了第13包子
小明吃了第13个包子
生产了第14包子
小明吃了第14个包子
生产了第15包子
小明吃了第15个包子
生产了第16包子
小明吃了第16个包子
生产了第17包子
小明吃了第17个包子
生产了第18包子
小明吃了第18个包子
生产了第19包子
小明吃了第19个包子
生产了第20包子
小明吃了第20个包子

一开始一定要send(None)
当然也可以使用p.next(),next§

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值