作者: | Caleb Hattingh |
语言: | 英文 |
出版年份: | 2020 |
编程语言: | Python |
下载链接: |
书籍均收集自互联网,仅供学习和研究使用,请莫用于商业用途。谢谢合作。 |
Using Asyncio in Python
是一本由 Caleb Hattingh 编写的 Python 异步编程指南,于 2020 年由 O’Reilly Media 出版。随着 Python 3.4 引入 asyncio 库以及 Python 3.5 增加 async 和 await 关键字,异步编程成为 Python 社区关注的焦点。然而,许多开发者对这些新特性感到困惑,认为它们复杂且难以理解。本书旨在帮助读者理解为什么引入这些新特性,以及如何在自己的项目中使用它们。
作者通过一个“机器人餐厅”的故事,生动地阐述了从多线程编程到异步编程的思维转变。故事中,多线程机器人在执行任务时频繁出现冲突和效率低下问题,而通过改用单线程的“循环机器人”,虽然解决了冲突问题,但也暴露了新的挑战,如某些任务耗时过长会导致其他任务延迟。这个故事帮助读者理解异步编程的核心思想:在等待任务完成时切换到其他任务,以提高效率。
本书对线程的优缺点进行了深入分析。线程的优点包括代码的线性结构、利用多核 CPU 以及丰富的开发经验。然而,线程也存在诸多问题,如线程安全问题、资源消耗大、上下文切换成本高以及操作系统对线程数量的限制。作者通过案例展示了线程在高并发场景下的局限性,以及如何通过异步编程避免这些问题。
本章是异步编程的快速入门,介绍了 asyncio 的核心功能,包括启动事件循环、调用异步函数、创建任务、等待多个任务完成以及关闭循环。作者通过“Hello World”示例和“Hello-ish World”示例,详细解释了如何使用 asyncio.run() 函数以及如何手动管理事件循环。此外,还介绍了如何使用线程池执行阻塞函数,以及如何通过 asyncio.Queue 在协程之间传递数据。
本书通过多个案例展示了如何使用异步库来解决实际问题。例如,使用标准库中的 streams API 实现消息队列,通过 Twisted 和 asyncio 的结合实现更高效的网络编程,以及使用 Janus 队列在协程和线程之间传递数据。此外,还介绍了如何使用 aiohttp 实现 HTTP 客户端和服务器,以及如何利用 ZeroMQ 实现分布式应用性能监控。
本书适合有一定 Python 编程基础,希望学习异步编程的开发者。无论是初学者还是有一定经验的开发者,都能从本书中获得关于异步编程的深入理解和实用技巧。
Using Asyncio in Python
是一本全面且实用的异步编程指南。它不仅介绍了 asyncio 的基本概念和使用方法,还通过丰富的案例展示了如何在实际项目中应用异步编程。本书帮助读者理解异步编程的优势和挑战,从而更好地利用 Python 的异步特性来开发高效、可靠的程序。