2018-12-16 协程


协程 又叫微线程,纤程
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)


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 8,136评论 0 9
  • 一、总体内容 1.1、协程的介绍 1.2、迭代器以及迭代器的应用 1.3、生成器(生成器与迭代器保存的都是生成数据...
    IIronMan阅读 4,294评论 0 1
  • 包(lib)、模块(module) 在Python中,存在包和模块两个常见概念。 模块:编写Python代码的py...
    清清子衿木子水心阅读 9,207评论 0 27
  • 文|江晓白 01 上周某一天,把钥匙锁在屋子里了,找了开锁的来。 人家来了一看,“炸”了:这不是梅花锁呀,这个我们...
    江晓白阅读 4,432评论 34 44
  • 《Effective C++ 中文版 第三版》读书笔记 条款 35:考虑 virtual 函数以外的其他选择 假设...
    赵者也阅读 3,552评论 0 0