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()就可以变成迭代器
  • 相关阅读:
    权限管理的三级菜单的流程
    Django之extra
    Django-Rest-Framework的解析器和渲染器
    Django-Rest-Framework的权限和频率
    权限管理-一级菜单-二级菜单-三级菜单-路径导航和权限粒度控制到按钮级别
    Django-Rest-Framework的版本和认证
    【leetcode】Valid Number
    【leetcode】4Sum
    【leetcode】Preimage Size of Factorial Zeroes Function
    【leetcode】Champagne Tower
  • 原文地址:https://www.cnblogs.com/fuyuteng/p/12091066.html
Copyright © 2011-2022 走看看