生成器的作用:
减少内存分配,多线程(如迅雷的多线程下载,可使用这种方法实现)。
'''
生成器的创建方式:
第一种方式:类似于列表推导式,将[]换成()
g=(x+1 for x in range(5))
第二种方式:函数+yield关键字
def func():
....
yield
g=func()即为生成器
产生元素的方式:
第一种:next(generator())
第二种:generator.__next__()
第三种:generator.send(value)//适用于需要传值的生成器
'''
# 定义第一个函数
def task1(n):
for i in range(n):
print('正在搬第{}块砖。'.format(i))
yield None
# 定义第二个函数
def task2(n):
for i in range(n):
print('正在唱第{}首歌。'.format(i))
yield None
g1=task1(5)
g2=task2(5)
while True:
# 抓取StopIteration异常
try:
g1.__next__()
g2.__next__()
except:
break