day4迭代器正则表达式 (2)

  假如我们编写一个程序去取钱,比如5万,银行要审核大额取款,审核时间三十分钟,如果通常的串行程序,就要等银行的反馈结果,程序才能继续执行,yield就是避免这种情况,让程序继续等待,程序本身执行下面程序。串行是同步,生成器就是异步的情况。

    生成器可以从断点处继续执行代码。生成器可以保存函数的中断状态。

    作用:

    这个yield的主要效果呢,就是可以使函数中断,并保存中断状态,中断后,代码可以继续往下执行,过一段时间还可以再重新调用这个函数,从上次yield的下一句执行。

    另外,还可以通过yield实现在单线程的情况下并发运算的效果。

   

day4迭代器正则表达式

    下面来看一个实例:

    import time
  #导入时间函数,让程序执行等待

  def consumer(name):
  #消费者模型
    print("%s 准备吃包子啦!"%name)
    while True:
      baozi = yield
      print("包子[%s]来了,被[%s]吃了!" %(baozi,name))

  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")

    导入时间模块,定义生产者多久可以生成包子,定义两个模块,一个是生成者模块,一个是消费这模块,消费者模块功能是告诉生产者有消费者来买包子了,并且接收生产者生产的包子;生产者的模型是接收两个消费者来的消息,并且开始生产包子,并且生产者生成包子是需要时间的,生产完包子之后把使用send把包子发给消费者。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzfgg.html