zoukankan      html  css  js  c++  java
  • python(4)–yield实现异步

    首先我们假设一个情景:一个人做包子,一次只能做一个;来了两个吃包子的,做包子做好了包子依次分给两个吃包子的。

    先上代码:

    import time
    
    '''
    一个做包子吃包子模型,一个做包子的,两个吃包子的,包子一个一个做,做好后依次分给两个吃包子的吃货
    '''
    
    def chibaozi(name):
        while True:
            baozi = yield
            print("第%s个包子做出来了,分给%s" % (baozi, name))
    
    def zengbaozi():
        chihuo1 = chibaozi('张三')     #定义两个吃货
        chihuo2 = chibaozi('李四')
        chihuo1.__next__()              #先执行一次next,为了让包子停在yield位置,准备打印
        chihuo2.__next__()
        print("厨师开始蒸包子了!!吃货们请各自就绪!!")
        for i in range(1, 11):
            if i%2 == 0:
                chihuo2.send(i)         #将i的值传给yield,请记住send()函数用法
            else:
                chihuo1.send(i)
            time.sleep(2)
        print("包子都吃完了,吃货们该走了!")

    运行一下,看看结果:

    厨师开始蒸包子了!!吃货们请各自就绪!!
    第1个包子做出来了,分给张三
    第2个包子做出来了,分给李四
    第3个包子做出来了,分给张三
    第4个包子做出来了,分给李四
    第5个包子做出来了,分给张三
    第6个包子做出来了,分给李四
    第7个包子做出来了,分给张三
    第8个包子做出来了,分给李四
    第9个包子做出来了,分给张三
    第10个包子做出来了,分给李四
    包子都吃完了,吃货们该走了!
  • 相关阅读:
    VS自带的诊断工具
    Electron学习
    PC跨*台
    .NET调试学习
    Mac使用
    SSL/TLS
    UKey学习
    授权机制OAuth、JWT
    代理服务器
    .NET相关源码查找
  • 原文地址:https://www.cnblogs.com/huangxm/p/5225553.html
Copyright © 2011-2022 走看看