18.5. asyncio
— 异步 I/O 、事件循环、 协程和任务 ¶
3.4 版本中新加入。
源代码︰lib/asyncio/
注意
asyncio包已经在临时基础中包含在标准库中。如果核心开发人员认为必要,则可能会发生向后不兼容的更改(直到并包括模块的删除)。
此模块为编写单线程并发代码提高基础架构,通过使用协程、套接字和其他资源的 I/O 多路复用,运行网络客户端和服务器,以及其他相关的基元。以下是更详细的软件包内容列表:
- 各种系统具体实现的可插拔 事件循环 ;
- 传输 和 协议 抽象(类似于 Twisted 里的那些) ;
- 具体支持 TCP、 UDP、 SSL、 子进程管道,延迟调用,和其他 (有些可能依赖于系统);
- 一个模仿
concurrent.futures
模块但适合在事件循环中使用的Future
类; - 基于
yield from
( PEP 380)的协程和任务帮助以顺序的方式编写并发代码; - 取消操作支持
Future
和协程; - 单线程的协程间使用的 同步基元 类似于
threading
模块里那些; - 一个接口,用于将工作传递到线程池,在绝对,明确不得不使用一个阻塞I / O调用的库的时候。
异步编程比经典的"顺序"编程更复杂︰ 查看 Develop with asyncio 页面,其中列出了常见的陷阱,并解释了如何避免它们。在开发期间 启用调试模式 以检测常见问题。
目录:
- 18.5.1.基础事件循环
- 18.5.2.事件循环
- 18.5.3.任务和协同程序
- 18.5.4.传输和协议 (基于回调的 API)
- 18.5.5.流 (协同基于 API)
- 18.5.6.子过程
- 18.5.7.同步原语
- 18.5.8.队列
- 18.5.9.使用asyncio开发