11.6. asyncio — 异步 I/O,事件循环和并发工具
了解本节目标:异步 I/O 和并发框架。
asyncio
模块提供一套使用协程来建立并发应用的功能。threading
模块所实现的并发是多个线程,multiprocessing
则是多个系统进程,asyncio
是以单个进程,单个线程的方式所实现的,应用程序的协同程序会在适宜的时候显式得进行切换。大多数上下文的切换发生在程序被阻塞住等待读或写数据的时候,asyncio
还支持定时器任务,可以在未来时间自动执行设置好的代码,这样就可以让一个协程等待另一个协程完全完成后再执行,同时也可以处理系统信号,识别让应用程序做些其他事的事件。
- 异步并发概述
- 使用协程书写多任务合作代码
- 定时调用常规函数
- 以异步方式生成数据
- 并发执行任务
- 使用控制结构构建协程
- 同步机制
- 异步 I/O 的抽象协议类
- 使用协程和流的异步 I/O 协议类
- 使用 SSL
- 域名服务器接口
- 使用子进程
- 接受 Unix 信号
- 三结合 -- 协程,线程,进程。
- asyncio 调试篇
提醒
Python 3.5 中,
asyncio
任然是一个 临时 模块。该 API 在 Python 3.6 中已经稳定下来了,大多数变化也已经反向移植到 Python 3.5 的后续补丁版本中。因此,在不同版本的 Python 3.5 下,该模块可能会略有不同。推荐阅读
- asyncio 标准库文档
- PEP 3156 -- 异步 IO 支持重新启动: "asyncio" 模块
- PEP 380 -- 绑定一个子生成器的语法
- PEP 492 -- 带有 async 和 await 语法的协程
concurrent.futures
-- 并发任务管理池socket
-- 低级网络通信select
-- 低级异步 IO 工具socketserver
-- 网络服务器创建框架- asyncio: Python 3.6更新信息 --Python 3.6 中形成稳定 API 的
asyncio
模块更新总结。- trollius -- asyncio 的原始版本,Python 2 中。
- Python 3.4 中新的 asyncio 模块: 事件循环 -- Gastón Hillar 在 Dr. Dobb's 的文章。
- 通过例子探索 Python 3 的 Asyncio -- Chat Lung 发布的文章。
- 一个使用 asyncio 协程的爬虫 -- A. Jesse Jiryu Davis 和 Guido van Rossum 在 开源应用架构 中的一篇文章。
- 体验 asyncio --Nathan Hoad 的文章。
- Async I/O 和 Python -- Mark McLoughlin 的文章。
- 关于协程和并发的探索文章 -- David Beazley 在 PyCon 2009 发布的教程。
- async/await 在 Python 3.5 中如何工作? -- Brett Cannon 发布的文章。
- Unix 网络编程,卷 1: 套接字网络API, 第三版 由 W. Richard Stevens, Bill Fenner, 和 Andrew M. Rudoff撰写。 由 Addison-Wesley Professional 出版, 2004. ISBN-10: 0131411551
- Python 网络编程基础, 第三版 由 Brandon Rhodes 和 John Goerzen 撰写。 由 Apress 发布, 2014. ISBN-10: 1430258543
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。