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

Posted Simple-Sir

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识python: 生成器并行(做包子,吃包子)相关的知识,希望对你有一定的参考价值。

知识点:

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\')

 

执行结果:

 

以上是关于初识python: 生成器并行(做包子,吃包子)的主要内容,如果未能解决你的问题,请参考以下文章

python3--生成器并行运算

python学习之路:生成器并行运算

生成器并行

生成器并行运算

Python_生成器(下)之单线并行--生产着消费者模型

queue队列吃包子