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个包子做出来了,分给李四
    包子都吃完了,吃货们该走了!
  • 相关阅读:
    archlinux .bash_history
    Ubuntu环境下挂载新硬盘
    软碟通 UltraISO U启替代品 Win32DiskImager 无设备 无盘符 无u盘 无优盘 解决方案 之diskpart
    delphi Integer overflow
    MSBuild Tools offline
    delphi synedit免费的拼写检查器dll
    git 自定义命令行
    lua编译
    gcc ar
    Windows Subsystem for Linux (WSL)挂载移动硬盘U盘 卸载 c d 盘
  • 原文地址:https://www.cnblogs.com/huangxm/p/5225553.html
Copyright © 2011-2022 走看看