admin管理员组文章数量:1487745
python知识点100篇系列(20)
什么是协程:
协程(Coroutine),也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。
在Python中实现协程的方式有多种:
- yield,生成器,借助生成器的特点也可以实现协程代码;
- asyncio,在Python3.4中引入的模块用于编写协程代码;
- async & awiat,在Python3.5中引入的两个关键字,结合asyncio模块可以更方便的编写协程代码;
使用最后一种方式编码的协程伪代码如下:
代码语言:python代码运行次数:0运行复制import asyncio
async def func():
print(1)
await asyncio.sleep(2) # 耗时操作
print(2)
tasks = [ asyncio.ensure_future(func()) for i in range(10)]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
协程相关概念:
- 协程函数:定义函数时候由async关键字装饰的函数 async def 函数名
- 协程对象:执行协程函数得到的协程对象
执行协程函数只会创建协程对象,函数内部代码不会执行。如果想要运行协程函数内部代码,必须要将协程对象交给事件循环来处理。
asyncio.run( func())
- await关键字:await + 协程对象,遇到IO操作挂起当前协程(任务),等IO操作完成之后再继续往下执行。当前协程挂起时,事件循环可以去执行其他协程(任务)。
- Task对象
代码语言:python代码运行次数:0运行复制在事件循环中添加多个任务。Task用于并发调度协程,asyncio.create_task(协程对象)
tasks = [asyncio.create_task(fun_a()),
asyncio.create_task(fun_a()),
]
本文标签: python知识点100篇系列(20)
版权声明:本文标题:python知识点100篇系列(20) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/shuma/1754914420a3181194.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论