Python_生成器
1.生成器
只有在调用时才生成相应的数据,只记录当前位置,只有一个__next__()方法.
def fib(max):
n,a,b = 0,0,1
while n < max:
#print(b)
yield b
a,b = b,a + b
n = n + 1
return 'done'
f = fib(6)
while True:
try:
x = next(f)
print('f:',x)
except StopIteration as e:
print('Generator return value:',e.value)
break
利用生成器达到单线程并行计算的目的
# -*- coding:utf-8 -*-
# Author:Soap
import time
def consumer(name):
print('%s 准备吃包子啦!'%name)
while True:
baozi = yield
print('包子[%s]来了,被[%s]吃了!'%(baozi,name))
def producer(name):
c = consumer('A')
c2 = consumer('B')
c.__next__()
c2.__next__()
print('老子准备开始做包子啦!')
for i in range(10):
time.sleep(1)
print('%s 做了两个包子'%name)
c.send(i)
c2.send(i)
producer('soap')

浙公网安备 33010602011771号