前言
为什么要写本书
我刚进入大学时就接触到了Python语言,当时就被它的各种语法糖和简单易学的特性吸引。随着学习和使用的深入,我慢慢体会到了利用它的高级特性也可以解决更加复杂的问题。这一点在我大学毕业进入阿里云工作后有了更深刻的体会和认知。
刚进入阿里云时,很多工作都需要用Java语言来实现。但是因为我对Python的偏爱,一直想看看用Java实现的功能是否可以用Python来重构或实现。于是,我开始对Python进行更加深入的研究,发现Java和Python在实现过程中有太多相似的地方。当然,Python和Java有不同的应用场景,具有不同的业务处理能力。在Python擅长的业务中,现实的业务场景对高并发、高性能的要求在逐步提高。要想满足这些需求,我们就需要对Python线程、进程、原子锁等高级特性有深入理解。
“深入理解”四个字说起来容易,但做起来非常难。这不仅需要进行大量针对性学习和刻意练习,还需要在实际工作中进行实践和总结。幸运的是,在阿里云工作期间,我有很多机会使用Python。因为我有了对Python高并发与高性能内容的深入理解,在日常工作中处理那些逻辑复杂、耗时长、I/O流量大的任务时更加得心应手。比如,在处理阿里云内部某电信系统大批量数据的频繁生成和导出时,由于数据体量庞大(大于TB级别),使用Java处理所需时间和使用Python处理所需时间相差较大——这是Java和Python在线程与并发实现方式上有所差别造成的,所以我优先考虑使用Python并发机制去处理,而使用Java处理一些基本的服务。
目前,市面上关于Java高并发、高性能的书很多,讲解Python基本语法和常规使用的书也很多,但很少有专门针对Python高并发、高性能从实现原理到实践应用系统性讲解的书。鉴于此,我决定结合自己的经验对Python语言中的高级编程部分(即高并发、高性能编程的核心实现原理与实践应用)进行剖析,以帮助那些希望成为Python高级工程师的人。
读者对象
❑Python开发工程师
❑Python语言爱好者
❑Python高并发、高性能编程爱好者
❑CPython解释器或虚拟机研究者
❑开设相关课程的高校师生
本书特色
本书主要介绍Python高并发、高性能编程的核心实现原理与代码实现,具体包括如下内容。
❑Python高并发、高性能编程的步骤和规范。
❑与Python高并发、高性能编程相关的核心实现原理。
❑与Python高并发、高性能编程相关的特性在当下主流的Python解释器或虚拟机CPython中的具体表现形式和内存分配策略。
从内容呈现形式上来说,本书具有如下特色。
❑在深度解读核心原理的同时,通过实际工作场景的实现方式来加深读者对Python高并发、高性能编程核心原理的理解。
❑只聚焦于干货内容,对读者实践和学习无用的内容一律不要。
❑对于重点、难点给出对应的图例和实际案例,以帮助读者理解。
❑只给出最核心的代码,减轻读者的学习压力。
如何阅读本书
本书分为4篇。
❑基础篇:系统地介绍Python高级编程所涉及的基础概念,以及当下主流的Python 3.X版本,使读者对Python高级编程所需的基础知识有一定的了解。
❑高并发篇:系统地介绍Python中的高并发概念,包括Python如何实现高并发、Python线程的实现与操作、Python协程的实现与操作,以及Python中的锁机制、Python中的原子性和线程池的基本实现。
❑高性能篇:以对Python代码进行性能优化为指导,介绍如何对基础的Python代码进行性能优化、如何基于Profile对Python代码进行性能优化、如何基于Python的C拓展组件对Python代码进行性能优化,以及优化前后Python代码性能指标监测与统计。
❑实践篇:以书中所介绍的理论知识为根基,介绍常见的邮件发送功能、日志打印功能、用户注册和登录功能在高并发环境下的实现,同时基于Locust框架对实现的上述功能进行并发性能测试。
附录A为Django框架快速入门,为没有用过Django框架的读者提供快速入门Django框架的相关知识。
附录B为FastAPI框架快速入门,为没有用过FastAPI框架的读者提供快速入门FastAPI框架的相关知识。
如果你是资深Python开发工程师,想了解关于Python高并发、高性能的相关知识,可以直接从高并发篇开始学习;如果你没有Python高并发、高性能相关知识储备,需要从基础篇开始学习。
勘误和支持
由于作者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,我特意创建了一个邮箱higherpython@gmail.com,你可以将书中的错误发送到该邮箱;同时,你遇到任何与Python相关的问题和对本书有任何建议,也可通过该邮箱进行沟通,我将尽力提供满意的解答和回复。书中的全部源文件均可以从GitHub仓库(https://github.com/SteafanMrZhou/HigherPythonCode)中下载。
致谢
首先感谢Python之父——Guido van Rossum,他为IT领域注入了新生力量。
其次感谢我的母校——江西科技学院,校内图书馆为我提供了汲取前沿专业知识的机会及安静的读书环境。感谢学校老师们悉心教导,为我解疑答惑。
最后感谢我的父母,是他们将我培养成人,不断鼓励我,指引我走向光明。特别真诚地感谢我的妻子,是她在我写作过程中给予我无微不至的关怀与理解,并时时刻刻给予我前进的力量和信心!
谨以此书献给我的职业生涯和我最亲爱的家人,以及众多热爱编程、热爱Python的朋友们!