-
随着 cpu 多核化,都需要实现由于自身历史原因(单线程环境)下的并发功能
-
简化代码,避免回调地狱,关键字支持
-
有效利用操作系统资源和硬件:协程相比线程,占用资源更少,上下文更快
什么是协程?
总结一句话,协程就是满足下面条件的函数:
-
可以暂停执行(暂停的表达式称为暂停点)
-
可以从挂起点恢复(保留其原始参数和局部变量)
-
事件循环是异步编程的底层基石
混乱的历史
Python 协程的进化
-
Python2.2 中,第一次引入了生成器
-
Python2.5 中,yield 关键字被加入到语法中
-
Python3.4 时有了 yield from(yield from 约等于 yield + 异常处理 + send), 并试验性引入的异步 I/O 框架 asyncio(PEP 3156)
-
Python3.5 中新增了 async/await 语法(PEP 492)
-
Python3