Python高性能编程(第2版)

Python高性能编程(第2版)

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

类似推荐

编辑推荐

本书基于Python 3编写,阐述如何找出计算密集型程序的性能瓶颈,进而加快代码的执行速度。

内容简介

Python语言是一种脚本语言,应用领域非常广泛,包括数据分析、自然语言处理、机器学习、科学计算、推荐系统构建等。 本书共有12章,围绕如何进行代码优化和加快实际应用程序的运行速度进行讲解,还介绍了如何解决CPU密集型问题、数据传输和内存密集型问题,如何通过移动数据、PyPy即时编译器和异步I/O提升性能。本书主要包括以下内容:计算机原理、列表和元组、字典和集合、迭代器、Python模块、并发性、集群计算等。最后,本书通过一系列真实案例展现了在应用场景中使用Python时需要注意的问题。 本书适合中级和高级Python程序员,以及有一定Python语言基础想要得到进阶和提高的读者阅读。

作者简介

作者米夏·戈雷利克,Fast Forward Labs联合创始人,致力于探讨与机器学习研究和利用相关的伦理及现实问题。

章节目录

版权信息

内容提要

O'Reilly Media,Inc.介绍

前言

第1章 理解高性能Python

1.1 基本的计算机系统

1.1.1 计算单元

1.1.2 存储单元

1.1.3 通信层

1.2 综合考虑

1.3 为何使用Python

1.4 如何成为高性能程序员

1.4.1 最佳实践

1.4.2 对Notebook最佳实践的思考

1.4.3 重新发现工作的乐趣

第2章 通过剖析找出瓶颈

2.1 高效地剖析

2.2 朱利亚集合简介

2.3 计算整个朱利亚集合

2.4 简单计时方法

2.5 使用UNIX命令time的简单计时

2.6 使用模块cProfile

2.7 使用SnakeViz可视化cProfile的输出

2.8 使用line_profiler逐行剖析

2.9 使用memory_profiler诊断内存占用情况

2.10 使用PySpy查看既有进程

2.11 字节码:幕后发生的情况

2.11.1 使用模块dis查看CPython字节码

2.11.2 复杂度随方法而异

2.12 优化期间使用单元测试确保代码正确

2.13 确保代码剖析成功的策略

2.14 小结

第3章 列表和元组

3.1 更高效的查找方式

3.2 比较列表和元组

3.2.1 作为动态数组的列表

3.2.2 作为静态数组的元组

3.3 小结

第4章 字典和集合

4.1 字典和集合的工作原理

4.1.1 插入和检索

4.1.2 删除

4.1.3 调整长度

4.1.4 散列函数和熵

4.2 字典和名称空间

4.3 小结

第5章 迭代器和生成器

5.1 无穷数列迭代器

5.2 延迟执行生成器

5.3 小结

第6章 矩阵和向量计算

6.1 问题简介

6.2 Python列表不够好吗

6.3 内存碎片

6.3.1 理解perf

6.3.2 根据perf的输出做决策

6.3.3 进入numpy

6.4 使用numpy解决扩散问题

6.4.1 内存分配和就地操作

6.4.2 有选择地优化:找出需要修复的地方

6.5 numexpr:让你能够更快、更轻松地执行就地操作

6.6 警示故事:对优化进行验证(scipy)

6.7 从矩阵优化获得的经验教训

6.8 Pandas

6.8.1 Pandas的内部模型

6.8.2 将函数应用于多行数据

6.8.3 根据部分结果而不是使用拼接来创建DataFrame和Series

6.8.4 有多种解决问题的方式(而且可能有更快的方式)

6.8.5 Pandas高效开发建议

6.9 小结

第7章 编译成C代码

7.1 速度提升方法

7.2 JIT编译器和AOT编译器

7.3 为何类型信息有助于提高代码运行速度

7.4 使用C语言编译器

7.5 回顾朱利亚集合示例

7.6 Cython

7.7 pyximport

7.7.1 使用Cython标注选项来分析代码块

7.7.2 添加类型标注

7.8 Cython和numpy

7.9 Numba

7.10 PyPy

7.10.1 垃圾收集方面的差异

7.10.2 运行PyPy及安装模块

7.11 速度提升小结

7.12 各种技术的适用场景

7.13 图形处理单元

7.13.1 动态图:PyTorch

7.13.2 GPU基本剖析

7.13.3 GPU性能考虑因素

7.13.4 在什么情况下使用GPU

7.14 语言交互接口

7.14.1 ctypes

7.14.2 cffi

7.14.3 f2py

7.14.4 CPython模块

7.15 小结

第8章 异步I/O

8.1 异步编程简介

8.2 async/await的工作原理

8.2.1 串行爬虫

8.2.2 gevent

8.2.3 tornado

8.2.4 aiohttp

8.3 兼具CPU密集型和I/O密集型的问题

8.3.1 串行版

8.3.2 分批处理结果

8.3.3 完全异步

8.4 小结

第9章 模块multiprocessing

9.1 模块multiprocessing概述

9.2 使用蒙特卡罗方法估算圆周率

9.3 使用进程和线程估算圆周率

9.3.1 使用Python对象

9.3.2 使用Joblib而不是multiprocessing

9.3.3 并行系统中的随机数

9.3.4 使用numpy

9.4 查找素数

9.5 使用进程间通信验证素数

9.5.1 串行解决方案

9.5.2 朴素进程池解决方案

9.5.3 改进的朴素进程池解决方案

9.5.4 将Manager.Value用作标志

9.5.5 将Redis用作标志

9.5.6 将RawValue用作标志

9.5.7 将mmap用作标志

9.5.8 将mmap用作标志(终极版)

9.6 使用multiprocessing共享numpy数据

9.7 同步文件和变量访问

9.7.1 锁定文件

9.7.2 锁定值

9.8 小结

第10章 集群和作业队列

10.1 集群的优点

10.2 集群的缺点

10.2.1 糟糕的集群升级策略让华尔街大牛损失4.62亿美元

10.2.2 Skype全球24小时中断服务

10.3 常见的集群设计

10.4 如何启动集群解决方案

10.5 使用集群时如何避免麻烦

10.6 两种集群解决方案

10.6.1 使用IPython Parallel为研究工作提供支持

10.6.2 使用Dask并行化Pandas

10.7 使用NSQ打造健壮的生产集群

10.7.1 队列

10.7.2 发布者/订阅者

10.7.3 分布式素数计算

10.8 其他集群工具

10.9 Docker

10.9.1 Docker的性能

10.9.2 Docker的优点

10.10 小结

第11章 减少内存占用量

11.1 基本类型对象的开销很高

11.1.1 模块array可高效地存储大量的基本类型对象

11.1.2 使用NumExpr减少NumPy占用的内存量

11.2 理解集合占用的内存

11.3 比较字节和Unicode

11.4 在内存中高效地存储大量文本

11.5 使用scikit-learn FeatureHasher进行文本建模

11.6 DictVectorizer和FeatureHasher简介

11.7 SciPy稀疏矩阵

11.8 减少内存占用量的技巧

11.9 概率数据结构

11.9.1 使用1字节的莫里斯计数器实现非常接近的计数

11.9.2 K最小值

11.9.3 布隆过滤器

11.9.4 LogLog计数器

11.9.5 实例

第12章 实战经验教训

12.1 使用特征引擎简化特征工程流水线

12.1.1 机器学习中的特征工程

12.1.2 艰巨的特征工程流水线部署任务

12.1.3 利用开源Python库

12.1.4 使用Feature-engine简化特征工程流水线的构建和部署工作

12.1.5 推广新的开源包

12.1.6 开发和维护开源库及鼓励积极投稿

12.2 表现出色的数据科学团队

12.2.1 需要多长时间

12.2.2 探索和规划

12.2.3 管理预期和交付

12.3 Numba

12.3.1 一个简单的示例

12.3.2 最佳实践和建议

12.3.3 寻求帮助

12.4 优化和思维

12.5 Adaptive Lab的社交媒体分析(2014)

12.5.1 Adaptive Lab的Python使用情况

12.5.2 SoMA的设计

12.5.3 开发方法

12.5.4 维护SoMA

12.5.5 给同行的建议

12.6 RadimRehurek网站如何让深度学习快步如飞(2014)

12.6.1 管用的策略

12.6.2 优化方面的经验教训

12.6.3 结语

12.7 Lyst网站可用于生产环境的大规模机器学习(2014)

12.7.1 集群设计

12.7.2 发展迅猛的初创公司中的代码迭代

12.7.3 构建推荐引擎

12.7.4 报告和监控

12.7.5 一些建议

12.8 Smesh的大规模社交媒体分析(2014)

12.8.1 Python在Smesh中扮演的角色

12.8.2 平台

12.8.3 实时高性能字符串匹配

12.8.4 报告、监控、调试和部署

12.9 使用PyPy成功地实现Web和数据处理系统(2014)

12.9.1 使用的工具

12.9.2 数据库

12.9.3 Web应用

12.9.4 OCR和翻译

12.9.5 任务分配和任务队列

12.9.6 结语

12.10 Lanyrd的任务队列(2014)

12.10.1 Python在Lanyrd扮演的角色

12.10.2 让任务队列表现出色

12.10.3 报告、监控、调试和部署

12.10.4 给同行的建议

作者简介

封面介绍

Python高性能编程(第2版)是2023年由人民邮电出版社出版,作者[美] 米夏·戈雷利克。

得书感谢您对《Python高性能编程(第2版)》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Python Web编程 电子书
本书介绍了Django2.0中各个功能模块的实现与使用方法,并以“在线教育平台”为例,讲解了基于Django2.0开发应用的实用技能。此外,本书还介绍了Django项目的上线部署方法以及在网站实际开发过程中常用的第三方功能模块。
Python编程入门与实战(第3版) 电子书
本书是一本全面介绍Python编程,并针对多个应用场景给出解决方案的编程手册。从Python的基础知识开始,介绍了数据类型、函数、条件、循环等基本概念,展示了生成器、面向对象编程等具有Python特色的进阶理念,并给出了定位和排除异常、测试代码、调试的方法。随后,本书针对GUI、数据科学等实用场景,使用Python解决实际问题。最后,本书给出了发布Python程序的方法。本书适合想要学习编程或有一
Python编程基础(第2版)(微课版) 电子书
本书以任务为导向,系统介绍Python编程基础及其相关知识的应用,讲解如何利用Python的知识解决部分实际问题。全书共9章,第1章介绍学习Python的准备工作,包括Python的由来、Python环境搭建、编辑器介绍与安装等。第2~8章主要介绍Python的基础知识、数据结构、程序流程控制语句、函数、面向对象编程、文件基础和常用的内置模块等内容。第9章介绍综合案例:学生测试程序设计。除第9章外
Python游戏趣味编程 电子书
1.易于学习和理解:先讲解较少的语法知识,通过游戏案例逐步引入新的语法知识; 2.为初学者量身打造:案例从易到难,所有程序的代码均不超过100行; 3.趣味性强:12个案例,涵盖了多种游戏类型,寓教于乐; 4.可拓展性强:提供练习题和参考答案,巩固知识,训练逻辑思维; 5.配套素材齐全:提供完整源代码和分步骤源代码、游戏素材、游戏效果演示视频,可通过异步社区观看游戏开发步骤讲解视频; 6.全彩印刷。 美国教育家杜威曾说过:“大多数的人,只觉得五官能接触的、实用的东西才有趣味,书本上的趣味是没有的。” 《Python游戏趣味编程》通过介绍12个由易到难的有趣游戏案例的编写过程,带领读者学习用Python开发趣味游戏,从而提升读者对编程的兴趣和能力。 《Python游戏趣味编程》把趣味游戏开发应用于Python编程教学,通过介绍12个由易到难的有趣游戏案例的编写过程,带领读者从零基础开始学习。全书共13章,系统讲解了Python语言基本概念、开发环境搭建、循环、列表、数据类型、条件、复合运算符、字符串拼接、布尔变量、数组、函数、列表操作、面向对象编程等基础知识,还介绍了图片操作、文件读写、声音播放、异常处理等较为实用的编程技能,所有这些知识和技能,都通过游戏案例展示其用法。贯穿各章,还给出了一些练习,帮助读者巩固所学的知识。附录A给出了这些练习题的答案,附录B给出了Python语法知识在书中相关章节的索引。 《Python游戏趣味编程》适合不同年龄、不同层次的Python编程初学者阅读和自学,也可以作为中学生、大学生学习程序设计的教材和少儿编程培训机构的参考教材。 本书适合以下人群阅读: 想要让孩子学习Python编程的家长,或者想要自己教孩子编程的家长。 学习过其他编程语言,想要快速学习Python的人。 对计算机游戏感兴趣,想要尝试Python游戏编程的人。 想要学习Python编程的中学生和大学生。 少儿编程培训机构的老师和学生。 任何对计算机编程感兴趣、特别是初次接触编程的人。 本书中制作和讲解的小游戏 弹跳的小球 美丽的圆圈画 疯狂的小圆圈 飞翔的小鸟 见缝插针 飞机大战 勇闯地下一百层 贪吃蛇 拼图游戏 消灭星星 坚持一百秒 趣味图像生成
Python少儿趣味编程 电子书
适读人群 :任何想要学习Python或初次接触编程的人;Python语言的初学者、计算机专业的学生。尤其适合信息技术课教师或培训机构的老师以及青少年读者(初高中学生)阅读。 《Python少儿趣味编》由少儿编程畅销图书作者精心编写,是少儿学习Python编程的趣味指南,全书共17章,按照由简到难、逐步深入的方式组织各章内容。《Python少儿趣味编》精心选取内容,注重难易适度,语言通俗易懂,代码示例丰富。在每章的末尾,还给出了一些练习题并给出了解答。 《Python少儿趣味编》具有以下特色: ● 精心选取和组织内容,注重难易适度——涵盖基础知识、趣味应用和热门应用。 ● 坚持“做中学”的理念和方法——通过详细的示例和课后练习帮助读者学习和掌握。 ● 体现趣味性——用海龟给图绘制的机器猫、小猪佩奇等卡通角色,编写贪吃蛇游戏,对古典名著《西游记》分词。 ● 增强可拓展性——逐步扩展和改进的“成绩单”示例程序,章末习题既巩固知识,也拓展编程技能。 《Python少儿趣味编》适合想要学习Python 编程基础的少年儿童(尤其是10 岁以上的孩子)及想要教孩子学习编程的家长阅读,也适合少儿编程培训班的老师用作少儿编程培训的教材。 本书带领读者编写的趣味程序包括: ● 帮Johnson 找到回家的路; ● 逐步扩展和改进的“成绩单”示例程序; ● 用海龟绘图绘制的机器猫; ● 用海龟绘图绘制小猪佩奇; ● 弹球游戏; ● 编写贪吃蛇游戏; ● 对古典名著《西游记》分词。