书籍作者:马修·福勒 | ISBN:9787302622833 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:3386 |
创建日期:2024-03-25 | 发布日期:2024-03-25 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
标准Python程序很容易过载,从而出现慢如龟爬的情况。asyncio库正是为了解决这些问题而构建的,它简化了任务的划分和调度。asyncio可无缝地同时处理多个操作,使应用程序疾如闪电,且具有扩展性。
《Python asyncio并发编程》在大量示例的引导下,介绍异步、并行和并发编程。将难理解的并发内容分解为简明易懂的流程图,使读者可轻松了解任务的运行方式。在本书中,读者将学习如何使用asyncio来突破Python的限制,从而加快Web服务器和微服务的运行速度。读者甚至可将asyncio与传统的多处理技术结合起来,以大幅提升性能。
主要内容
● 通过aiohttp构建支持并发Web请求的Web API
● 同时运行海量SQL查询
● 创建一个可并行处理数GB数据的map-reduce作业
● 在asyncio中使用线程来混合阻塞代码和asyncio代码
Matthew Fowler拥有近20年的软件工程经验,曾任软件架构师、工程总监等多个职位。他起初为科学应用程序编写软件,然后转向全栈Web开发和分布式系统,最终领导多个开发人员和管理人员团队为拥有数千万用户的电子商务网站编写应用程序及构建系统。他与妻子Kathy住在马萨诸塞州的列克星敦。
前 言
《Python asyncio并发编程》旨在介绍如何在Python中利用并行技术提高应用程序的性能、吞吐量和响应能力。本书首先关注并行的核心主题,解释asyncio的单线程并发模型是如何工作的,以及协程和async/await语法的工作原理。然后介绍并发的实际应用,例如并行发出多个 Web 请求或数据库查询、管理线程和进程、构建Web应用程序,以及处理同步问题。
目标读者
本书适用于希望在现有或新的Python应用程序中,更好地理解和使用并发技术的中高级开发人员。本书的立足于在于通过通俗易懂的语言解释复杂的并发技术。你不需要拥有并发经验,当然,如果你拥有这方面的经验,可以更快地理解书中的内容。在本书中,我们将介绍很多知识(从基于Web的API到命令行应用程序),帮助开发人员解决工作中遇到的许多问题。
内容路线图
本书一共14章,前几章介绍基础知识,后几章将介绍更多高级主题。
● 第1章:专注于Python中的基本并发知识。将介绍什么是CPU密集型和I/O密集型工作负载,并介绍asyncio的单线程并发模型的工作原理。
● 第2章:重点介绍asyncio协程的基础知识,以及如何使用async/await语法来构建使用并发的应用程序。
● 第3章:重点介绍非阻塞套接字和选择器如何工作,以及如何使用asyncio构建echo服务器。
● 第4章:重点介绍如何同时发出多个Web请求。通过本章的学习,我们将进一步了解关于并发运行协同程序的核心asyncio API。
● 第5章:重点介绍如何使用连接池同时进行多个数据库查询。还将介绍数据库上下文中的异步上下文管理器和异步生成器。
● 第6章:专注于multiprocessing库,特别是如何将它与asyncio结合,来处理CPU密集型工作。将构建一个map/reduce应用程序来介绍它的工作方法。
● 第7章:专注于多线程,特别是如何将它与asyncio结合来处理阻塞I/O。这对于没有原生asyncio支持但仍然可以从并发中受益的库很有帮助。
● 第8章:着重介绍网络流和协议。将使用网络流和协议来创建一个能同时处理多个用户聊天的服务器和客户端。
● 第9章:主要介绍异步驱动的Web应用程序和ASGI(异步服务器网关接口)。将探索一些ASGI框架,并讨论如何使用它们构建Web API。还将探索 WebSocket。
● 第10章:描述如何使用基于asyncio的Web API来构建微服务架构。
● 第11章:重点讨论单线程并发同步问题,以及如何解决这些问题。将深入研究锁、信号量、事件和条件。
● 第12章:重点关注异步队列。将使用异步队列来构建一个Web应用程序,该应用程序可以即时响应客户端请求,尽管需要在后台执行耗时的工作。
● 第13章:专注于创建和管理子进程,展示如何读取和写入数据。
● 第14章:专注于高级主题,例如强制事件循环迭代、上下文变量和创建自己的事件循环。这些信息对于asyncio API设计者和那些对asyncio事件循环的内部运作流程感兴趣的人十分有帮助。
对于读者来说,你应该仔细阅读前四章的内容,从而全面了解asyncio的工作原理、如何构建第一个真正的应用程序,以及如何使用核心asyncio API来并行运行协同程序(将在第4章中介绍)。此后,你可以根据自己的兴趣来阅读本书。
关于代码
本书包含许多代码示例,包括编号的代码清单。一些代码清单在同一章后面的清单中被重用,有些则在多个章节中被重用。对于跨多个章节重用的代码,将假定你已经创建了一个名为util的模块(你将在第2章中创建它)。对于每个单独的代码清单,假设你为该章创建了一个名为chapter_{chapter_number}的模块,然后将代码放入格式为listing_{chapter_number}_{listing_number}的Python文件中。例如,第2章中清单2-2的代码将位于一个名为chapter_2的模块中,该模块保存在名为listing_2_2.py的文件中。
书中多处提到性能数字,例如程序完成的时间或每秒完成的Web请求。本书中的代码示例运行在配备2.4GHz 8 核 Intel Core i9处理器和 32GB 2667 MHz DDR4 RAM 的2019 MacBook Pro上,并进行了基准测试,使用千兆无线互联网连接。根据你运行的机器,这些数字会有所不同,加速或改进的因素也会有所不同。
本书中使用的代码可通过扫描封底二维码下载。
Python的asyncio是一种异步编程的方式,可以在单线程中实现高并发的同时也提高了程序的效率。使用asyncio可以轻松地实现异步I/O操作,相较于传统的线程池或进程池并发方式更为灵活,而且代码也更加简单易懂。不仅如此,asyncio还是Python内置的模块,因此自然而然地就配合Python的其他模块和第三方库使用,是一种非常实用的编程方式。
2023-04-19 09:10:16
Python asyncio 是一个非常强大的并发编程工具,它可以让你利用单个线程来同时处理多个 IO 操作。使用 asyncio,你可以编写高效、可扩展、高并发的网络应用程序和协议。同时,Python asyncio 内置了事件循环机制,可用于处理异步 IO 操作。对于需要高并发和处理多个请求的应用程序,Python asyncio 是一个非常不错的选择。但是,由于它需要写异步代码,可能对于初学者来说有一定的学习门槛。
2023-04-19 09:10:16
Python asyncio是一个强大的异步编程库,它使得编写高效、可扩展的并发程序变得更加容易。使用asyncio可以实现非阻塞的IO操作,通过事件循环机制可以实现并发处理请求。在Python 3.4以后的版本中,asyncio已经成为标准库的一部分,说明其已经被广泛认可和使用。 使用asyncio可以大幅度提高程序性能,尤其是在处理大量并发请求时。它能够使你的程序在单线程中处理大量的并发I/O操作,从而避免了开启多个线程或进程所带来的开销。这些优点使得asyncio成为了现代web应用程序中必不可少的一部分,它可以用来处理高性能网络应用、数据处理和I/O密集的任务。 总之,所谓的“异步”就是将IO操作非阻塞化,调用切换得到操作系统的支持,使其对应用程序来说就像在同时执行一样,最终达到提高程序响应速度和吞吐量的目的。asyncio提供的异步IO的方式使得程序可以响应更快,更高效地处理请求,是目前非常流行的一种编程方式。
2023-04-19 09:10:16