2018-12-16 协程

2018-12-16  本文已影响0人  太阳出来我爬山坡

协程 又叫微线程,纤程
python 对协程的实现是通过generator实现的

  1. 生成器
    -含有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)


上一篇下一篇

猜你喜欢

热点阅读