18.5. asyncio — Asynchronous I/O, event loop, coroutines and tasks

3.4版的新功能.

源代码: Lib/asyncio/


该模块提供了使用协程编写单线程并发代码,通过套接字和其他资源对I / O进行多路访问,运行网络客户端和服务器以及其他相关原语的基础结构. 这是软件包内容的更详细列表:

  • 具有各种特定于系统的实现的可插入事件循环

  • 传输协议抽象(类似于Twisted中的抽象);

  • 对TCP,UDP,SSL,子进程管道,延迟的调用以及其他(具体取决于系统)的具体支持;

  • 一个Future类,它模仿concurrent.futures模块中的那个,但适用于事件循环;

  • 协同程序和任务基础上yield from PEP 380 ),以帮助以顺序方式编写并发代码;

  • 取消对Future和协程的支持;

  • 用于在单个线程中的协程之间使用的同步原语 ,模仿threading模块中的同步原语

  • 一个将工作传递给线程池的接口,在您绝对必须使用肯定会使用阻止I / O调用的库的时候.

异步编程比经典的"顺序"编程更为复杂:请参见" 使用异步开发"页面,其中列出了常见陷阱并说明了如何避免它们. 在开发过程中启用调试模式以检测常见问题.

目录:

也可以看看

asyncio模块是在 PEP 3156 . 有关传输和协议的动机入门,请参阅 PEP 3153 .