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 .