zoukankan      html  css  js  c++  java
  • python生成器并行实例

    生成器并行实例:
    send发送值被yield接受到赋值给baozi变量
           #yield作用只是在这里保存这个值的当前状态然后返回之后在调用next,又回到yield
           #单纯调用next不会给yield传值,next只是在调用yield,send是调用yield并且传值
           
           import time
    #协程
    def consumer(name):
        print("%s 准备吃包子啦!" %name)
        while True:
           baozi = yield#send发送值被yield接受到赋值给baozi变量
           #yield作用只是在这里保存这个值的当前状态然后返回之后在调用next,又回到yield
           #单纯调用next不会给yield传值,next只是在调用yield,send是调用yield并且传值
    
           print("包子[%s]来了,被[%s]吃了!" %(baozi,name))
    
    # c = consumer("dapangxiaozi")
    # c.__next__()
    # c.send("韭菜馅")
    # c.__next__()
    
    # def producer(name):
    #     c = consumer('A') #只是变成生成器
    #     c2 = consumer('B')
    #     c.__next__()
    #     c2.__next__()
    #     print("老子开始准备做包子啦!")
    #     for i in range(10):
    #         time.sleep(1)
    #         print("做了2个包子!")
    #         c.send(i)
    #         c2.send(i)
    #
    # producer("alex")
    def producer(name):
        c= consumer("A")
        c2 = consumer("B")
        c.__next__()
        c2.__next__()
        print("开始吃包子了!")
        for i in range(10):
            time.sleep(1)
            print("%s做了1个包子"%name)
            c.send(i)
            c2.send(i)
    producer("alex")

    迭代器:

    *可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

    我们已经知道,可以直接作用于for循环的数据类型有以下几种:

    一类是集合数据类型,如list、tuple、dict、set、str等;

    一类是generator,包括生成器和带yield的generator function。

    这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。

    可以使用isinstance()判断一个对象是否是Iterable对象:


    *可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
    *生成器一定是迭代器
    *可迭代对象加上iter()就可以变成迭代器
  • 相关阅读:
    Simpo
    Numpy技巧
    流程图
    注册免费试用12个月的亚马逊AWS云计算服务
    java-Collection
    CoreGraphic
    吴裕雄--天生自然python学习笔记:python 用pygame模块开发俄罗斯方块游戏
    吴裕雄--天生自然python学习笔记:python 用pygame模块检测键盘事件和鼠标事件
    吴裕雄--天生自然python学习笔记:python 用pygame模块角色类(Sprite)移动与碰撞
    吴裕雄--天生自然python学习笔记:python 用pygame模块动画一让图片动起来
  • 原文地址:https://www.cnblogs.com/fuyuteng/p/12091066.html
Copyright © 2011-2022 走看看