什么是生产器
利用迭代器,我们可以每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生产下一个数据。为了达到记录当前状态,并配合next()函数进行迭代使用,我们可以采用更简便的语法。即生成器(gennerator)。 生成器是一类特殊的迭代器
创建生成器的方法 1:将列表生成器 [ ] 改为()
代码:
nums = [x*2 for x in range(10)]
print(nums)
nums = (x * 2 for x in range(10))
print(nums)
创建生成器的方法 2 :是用yield创建生成器
def creat_fobo(all_num):
current_num = 0
a,b = 0,1
while current_num <= all_num:
# 使用yield关键字
ret = yield a
print(">>>ret>>>",ret)
a,b = b ,a+b
current_num += 1
使用gevent完成多任务的实现 (携程)
def show_spawn(current_name):
for i in range(10):
print(current_name, i)
time.sleep(random.random())
gevent.joinall([
gevent.spawn(show_spawn, "jack"),
gevent.spawn(show_spawn, "tom")
])