zoukankan      html  css  js  c++  java
  • python生成器

    生成器的作用是:节省运行空间,只有在循环到需要用的元素时才会生成相对应的数据。一般用__next__()取得相对应的位置元素的值

    生成器产生方式有2中:

    1.a=(i*2 for i i n range(10))

    2.yield来生成,可以将一个函数变成生成器

    举个例子来说明:

    yield将函数变成了生成器,起中断程序的作用,首先constomer(“xiangxiao”)将参数传给了constomer(name),然后c.__next__()调用了yield,并且执行了第一个输出“xiangxiao准备吃包子了”。接下来呢,调用了producer("xiangxiao")函数,它将“A”和“B”传给了constomer(name),并且调用yield,通过这个循环,以及send参数,将i的值传给yield并且调用了,这就是串行下的多线程并行

    import time
    def constomer(name):
        print("%s准备吃包子啦"%name)
        while True:

            baozi=yield
            print("%s准备被%s吃掉了"%(baozi,name))

        return 'done--'
     c=constomer("xiangxiao")
     c.__next__()

    # b="韭菜馅"
    # c.send(b)
    def producer(name):

        c=constomer("A")
        c2=constomer("B")
        c.__next__()
        c2.__next__()
        print("老子准备开始吃包子啦")
        for i in range(10):
            time.sleep(1)
            print("做了一个包子分两半!")
            c.send(i)
            c2.send(i)


    producer("xiangxiao")

     

  • 相关阅读:
    360随身WiFi使用问题解决,无法在没有网络的电脑上使用
    np问题(大数阶乘取模)
    传球(概率问题)
    区间平均值(逆序对)
    完全平方数最大
    计算毫秒
    祖玛游戏
    后缀最大值
    Blah数集(双指针单调队列)
    逢低吸纳(最长下降子序列+方案数+高精度)
  • 原文地址:https://www.cnblogs.com/pythonbz/p/6284018.html
Copyright © 2011-2022 走看看