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 页面,其中列出了常见的陷阱,并解释了如何避免它们。在开发期间 启用调试模式 以检测常见问题。

目录:

也可以看看

asyncio模块是在 PEP 3156中设计的。有关运输和协议的动机性引物,请参见 PEP 3153