python yield生成器,生成一个对象
<generator object producer at 0x7f472eb01430>
可以节约很多内存
一个经典的案例的
def producer():
while True:
count=yield
print(f"生产了第{count}包子")
def consuer(num):
print(f"小明吃了第{num}个包子")
if __name__=='__main__':
p=producer()
p.send(None)
for i in range(1,21):
p.send(i)
consuer(i)
运行结果
生产了第1包子
小明吃了第1个包子
生产了第2包子
小明吃了第2个包子
生产了第3包子
小明吃了第3个包子
生产了第4包子
小明吃了第4个包子
生产了第5包子
小明吃了第5个包子
生产了第6包子
小明吃了第6个包子
生产了第7包子
小明吃了第7个包子
生产了第8包子
小明吃了第8个包子
生产了第9包子
小明吃了第9个包子
生产了第10包子
小明吃了第10个包子
生产了第11包子
小明吃了第11个包子
生产了第12包子
小明吃了第12个包子
生产了第13包子
小明吃了第13个包子
生产了第14包子
小明吃了第14个包子
生产了第15包子
小明吃了第15个包子
生产了第16包子
小明吃了第16个包子
生产了第17包子
小明吃了第17个包子
生产了第18包子
小明吃了第18个包子
生产了第19包子
小明吃了第19个包子
生产了第20包子
小明吃了第20个包子
一开始一定要send(None)
当然也可以使用p.next(),next§