标签:send return while div 延迟 iter 包子 producer 开始
理解:
我们先用一个通俗的比方来了解下生成器,去饭店吃饭时,我们点了菜单,厨师不是一次性把菜都上齐,而是一个个菜上。这里的厨师就是一个生成器对象。生成器是python一大特性,python使用生成器对延迟操作提供支持,只在都要好好的时候才产生结果,而不是立 即产生结果。
1、生成器函数:常规函数定义,使用yield语句而不是return语句返回结果,yield语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次从它离开的地方继续执行
2、生成器表达式:类似于列表,但是,生成器返回按需产生结果的一个对象,而不是一次构建一个结果列表
3、学习生成器需要先学习迭代器,判断是否为迭代器可以看是否有iter() 和next()方法
4、生成器只能遍历一次
需求:
使用生成器来现实一个点包子做包子的伪并发小程序
代码:
import time def consumer(name): print("%s 点了包子啦!" %name) while True: baozi = yield print("包子[%s]来了,被[%s]吃了!" %(baozi,name)) def producer(name): c1 = consumer(‘liun‘) c2 = consumer(‘dyq‘) c1.__next__() c2.__next__() print("师傅开始准备做包子啦!") for i in [i+1 for i in range(10)]: if i%2 == 0: time.sleep(1) print("做了2个包子!") c1.send(i-1) c2.send(i) producer("liun")
标签:send return while div 延迟 iter 包子 producer 开始
原文地址:http://www.cnblogs.com/liuneng/p/7447226.html