协程 又叫微线程,纤程
python 对协程的实现是通过generator实现的
- 生成器
-含有yield 有函数
-生成器启动不会像函数一样马上执行
-需要通过next(生成器)启动
-yield 语句会返回对象并暂停
"""
def a():
print(a.name)
a()
def myGen():
print('第一次执行')
yield 1 #返回1,并暂停
print('第二次执行')
yield 2 #返回 2,并停
print('第三次执行')
#没有代码了,抛出StopIter
g= myGen() #创建生成器
print(g)
r1 = next(g)
print(r1)
r2 = next(g)
print(r2)
r3 = next(g)
print(r3)
-- coding: utf-8 --
send语句
-yield
"""
def consumer():
'''消费者'''
while True:
item = yield '好吃'
print(f'我收到了{item}')
def product(c):
next(c) #激活生成器
for i in range(10):
item = '包子%s' % i
print(f'我生产了:{item}')
res = c.send(item) #把item 发送给生成器,生成器打印 我收到了item
print(res) #打印yield 返回的值 '好吃'
c.close() #关闭生成器
if name == 'main':
c = consumer()
product(c)