Python 生成器

一、一个函数调用时返回一个迭代器,那么这个函数就叫做生成器,如果函数中包含yield语法,那么这个函数就会变成生成器。

二、#生成器可以在函数执行的时候干其它事情,函数依然保持中断状态,为异步请求

 1 def cash_out(amount):
 2     while amount > 0:
 3         amount -= 100
 4         yield amount
 5         print("又来取钱啦")
 6 
 7 atm = cash_out(500)
 8 print(type(atm))
 9 print(atm.__next__())
10 print(atm.__next__())
11 print("干别的事情")#干别的事情
12 print(atm.__next__())
13 print(atm.__next__())

  <class 'generator'>
  400
  又来取钱啦
  300
  我好帅
  又来取钱啦
  200
  又来取钱啦
  100

三、生产者消费者模型

 1 import time
 2 
 3 def xiaofeizhe(name):
 4     print("{0} 准备开始吃包子了".format(name))
 5     while True:
 6         baozi = yield
 7         print("{0}吃了{1}个包子了".format(name,baozi))
 8 def shengchanzhe(name):
 9     print("我要开始做包子啦")
10     c = xiaofeizhe("A1")
11     c2 = xiaofeizhe("A2")
12     c.__next__()
13     c2.__next__()
14     for i in range(10):
15         time.sleep(1)
16         print("{0}做了两个包子".format(name))
17         c.send(i)
18         c2.send(i)
19 if __name__ == "__main__":
20     shengchanzhe('黎叔叔')

 

posted @ 2018-06-20 22:16  Presley  阅读(150)  评论(0编辑  收藏  举报