初识python: 生成器并行(做包子,吃包子)

本文通过制作包子并供两人同时享用的生动例子,演示了如何使用Python的生成器实现简单的单线程并发操作。详细展示了如何创建和使用生成器来模拟包子的制作和消费过程,解释了send()函数在唤醒yield表达式并传递参数中的作用。

知识点:

send(i) :唤醒yield,并将 i 的值传给 yield

#!/user/bin env python
# author:Simple-Sir
# time:20181020
# 单线程并发:做一个包子,两个人吃
import time
# 吃包子生成器
def chibaozi(name):
    print('%s想吃包子了!' %name)
    while True:
        baozi = yield
        print('第%s个包子来了,被%s吃了一半!'%(baozi,name))

# 逻辑解析
# c = chibaozi('SimpleGirl')
# c.__next__()  # 唤醒yield
# b1='牛肉包子'
# c.send(b1)  # 注:唤醒yield,并将b1的值传给 yield

# 做包子生成器
def zuobaozi(name):
    c1 = chibaozi('SimpleSir')
    c2 = chibaozi('SimpleGirl')
    c1.__next__()
    c2.__next__()
    print('%s开始做包子了!'%name)
    for i in range(1,6):
        time.sleep(1)
        print('%s做了1个包子!'%name)
        c1.send(i)
        c2.send(i)

# 调用函数
zuobaozi('SimpleSir')

 

执行结果:

 

转载于:https://www.cnblogs.com/simple-li/p/9821453.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值