生成器和生成器并行(协程)
admin
2023-07-19 21:22:28
0

import time
#列表生成式

t=[i*2 for i in range(10)]

print(t)

print(t[8])

生成器:只有在调用的时候生成相应的数据,一种算法。

#只记住当前位置,只有一个_next_方法,取下一个值这个值就是当前值!。只能记住当前的!前面的数据不保存,后面的数据没生成。
c=(i*2 for i in range(100000000))
print(c)

#斐波那契
def fib(max):
n,a,b=0,0,1
while n#print(b)
yield b #这样做就是一个生成器(函数生成器)
a,b=b,a+b
n=n+1
return "done"

f=(fib(4)) #生成器调生成一个数据就中断,能进行其他操作
print(f.next())
print("干点其他的事")
print(f.next())

抓取异常

g=fib(6)
while True:
try:
x=next(g)
print("g:",x)
except StopIteration as e:
print("vlan:",e.value)
break

生成器并行,利用生成器调用中断做其他事再次调用。

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

def producer(name1,name2):
c=consumer(name1)
c2=consumer(name2)
c.next()
c2.next()
print("老子滴开始准备包子啦!")
for i in range(10):
time.sleep(1)
print("做了2个包子!一人一个!")
c.send(i) #把值传给yield并调用生成器
c2.send(i)

producer("alex","胡悦")

c=consumer("alex")

相关内容

热门资讯

张雪被粉丝吐槽合影时有情绪,本... 6月17日,张雪在直播连麦中遭到粉丝吐槽“我跟您合影的时候,您就有点生气了,当时对我的态度就是有一点...
父子误食小区喷敌敌畏果子后洗胃... 随着夏季气温持续升高、雨水增多,蚊蝇等病媒生物滋生繁殖进入旺季,不少物业公司会对小区公共区域、绿化景...
“哈兰德实在太哈兰德了” 梅开... “哈兰德实在太哈兰德了”  【“哈兰德实在太哈兰德了”】北京时间6月17日凌晨,2026年美加墨世界...
自然资源部开展台湾岛以东管辖海... 为全面了解我国管辖海域自然生态状况,支撑服务海洋生态保护,6月16日至18日,自然资源部东海局“向阳...
凤凰女记者:美伊签备忘录,伊朗... 伊美远程签署谅解备忘录,伊朗各界和民众有什么反应?凤凰卫视驻德黑兰记者李睿发回最新报道:许多曾经反对...
瑞士外交部:美伊会谈19日在比... 新华社日内瓦6月18日电(记者王其冰) 瑞士外交部18日表示,美国和伊朗计划与调解方巴基斯坦、卡塔尔...
备战世界杯比赛时训练场地上空现... 【环球网报道 记者 张江平】综合法新社等媒体报道,对于韩国队世界杯训练场地上空出现不明无人机,韩国队...
首艘平陆运河智能船舶示范船试航... 昨天,在广西贵港建造的首艘5000吨级平陆运河智能船舶示范船“北港运河002”试航,标志着平陆运河智...
“网络文明大讲堂”活动启动仪式... “网络文明大讲堂”活动启动仪式暨首场讲座活动现场。赵洋 摄 6月16日,“网络文明大讲堂”活动启动仪...
华为申请编码方法及译码方法专利... 国家知识产权局信息显示,华为技术有限公司申请一项名为“编码方法、译码方法及相关装置”的专利,公开号C...