PYTHON高性能编程(第2版) [美]米夏·戈雷利克(MichaGorelick)[美]伊恩·欧日沃尔德(I 人民邮电出版社 9787115599476 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线

PYTHON高性能编程(第2版) [美]米夏·戈雷利克(MichaGorelick)[美]伊恩·欧日沃尔德(I 人民邮电出版社 9787115599476精美图片
》PYTHON高性能编程(第2版) [美]米夏·戈雷利克(MichaGorelick)[美]伊恩·欧日沃尔德(I 人民邮电出版社 9787115599476电子书籍版权问题 请点击这里查看《

PYTHON高性能编程(第2版) [美]米夏·戈雷利克(MichaGorelick)[美]伊恩·欧日沃尔德(I 人民邮电出版社 9787115599476书籍详细信息

  • ISBN:9787115599476
  • 作者:暂无作者
  • 出版社:暂无出版社
  • 出版时间:2023-08
  • 页数:375
  • 价格:91.05
  • 纸张:胶版纸
  • 装帧:平装-胶订
  • 开本:128开
  • 语言:未知
  • 丛书:暂无丛书
  • TAG:暂无
  • 豆瓣评分:暂无豆瓣评分
  • 豆瓣短评:点击查看
  • 豆瓣讨论:点击查看
  • 豆瓣目录:点击查看
  • 读书笔记:点击查看
  • 原文摘录:点击查看
  • 更新时间:2025-01-19 17:35:33

内容简介:

Python语言是一种脚本语言,应用领域非常广泛,包括数据分析、自然语言处理、机器学习、科学计算、推荐系统构建等。

本书共有12章,围绕如何进行代码优化和加快实际应用程序的运行速度进行讲解,还介绍了如何解决CPU密集型问题、数据传输和内存密集型问题,如何通过移动数据、PyPy即时编译器和异步I/O提升性能。本书主要包括以下内容:计算机原理、列表和元组、字典和集合、迭代器、Python模块、并发性、集群计算等。最后,本书通过一系列真实案例展现了在应用场景中使用Python时需要注意的问题。


书籍目录:

目录

前言xvii

章 理解高性能Python1

1.1 基本的计算机系统1

1.1.1 计算单元2

1.1.2 存储单元4

1.1.3 通信层6

1.2 综合考虑8

1.3 为何使用Python11

1.4 如何成为高性能程序员13

1.4.1 实践14

1.4.2 对Notebook实践的思考15

1.4.3 重新发现工作的乐趣16

第 2章 通过剖析找出瓶颈17

2.1 高效地剖析18

2.2 朱利亚集合简介19

2.3 计算整个朱利亚集合22

2.4 简单计时方法—print语句和装饰器25

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

2.6 使用模块cProfile29

2.7 使用SnakeViz可视化cProfile的输出34

2.8 使用line_profiler逐行剖析35

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

2.10 使用PySpy查看既有进程47

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

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

2.11.2 复杂度随方法而异50

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

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

2.14 小结56

第3章 列表和元组57

3.1 更高效的查找方式60

3.2 比较列表和元组62

3.2.1 作为动态数组的列表63

3.2.2 作为静态数组的元组66

3.3 小结67

第4章 字典和集合69

4.1 字典和集合的工作原理72

4.1.1 插入和检索72

4.1.2 删除76

4.1.3 调整长度76

4.1.4 散列函数和熵76

4.2 字典和名称空间80

4.3 小结83

第5章 迭代器和生成器84

5.1 无穷数列迭代器88

5.2 延迟执行生成器89

5.3 小结93

第6章 矩阵和向量计算94

6.1 问题简介95

6.2 Python列表不够好吗99

6.3 内存碎片104

6.3.1 理解perf106

6.3.2 根据perf的输出做决策108

6.3.3 进入numpy108

6.4 使用numpy解决扩散问题111

6.4.1 内存分配和就地操作114

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

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

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

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

6.8 Pandas126

6.8.1 Pandas的内部模型127

6.8.2 将函数应用于多行数据128

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

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

6.8.5 Pandas高效开发建议137

6.9 小结138

第7章 编译成C代码139

7.1 速度提升方法140

7.2 JIT编译器和AOT编译器141

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

7.4 使用C语言编译器143

7.5 回顾朱利亚集合示例143

7.6 Cython144

7.7 pymport146

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

7.7.2 添加类型标注149

7.8 Cython和numpy152

7.9 Numba156

7.10 PyPy159

7.10.1 垃圾收集方面的差异160

7.10.2 运行PyPy及安装模块160

7.11 速度提升小结162

7.12 各种技术的适用场景163

7.13 图形处理单元165

7.13.1 动态图:PyTorch165

7.13.2 GPU基本剖析168

7.13.3 GPU性能考虑因素169

7.13.4 在什么情况下使用GPU170

7.14 语言交互接口172

7.14.1 ctypes173

7.14.2 cffi175

7.14.3 f2py177

7.14.4 CPython模块180

7.15 小结184

第8章 异步I/O186

8.1 异步编程简介187

8.2 async/await的工作原理190

8.2.1 串行爬虫191

8.2.2 gevent192

8.2.3 tornado196

8.2.4 aio199

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

8.3.1 串行版203

8.3.2 分批处理结果204

8.3.3 完全异步207

8.4 小结211

第9章 模块multiprocessing213

9.1 模块multiprocessing概述216

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

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

9.3.1 使用Python对象219

9.3.2 使用Joblib而不是multiprocessing225

9.3.3 并行系统中的数229

9.3.4 使用numpy230

9.4 查找素数232

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

9.5.1 串行解决方案247

9.5.2 朴素进程池解决方案247

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

9.5.4 将Manager.Value用作标志249

9.5.5 将Redis用作标志251

9.5.6 将RawValue用作标志253

9.5.7 将mmap用作标志254

9.5.8 将mmap用作标志(版)255

9.6 使用multiprocessing共享numpy数据257

9.7 同步文件和变量访问263

9.7.1 锁定文件263

9.7.2 锁定值267

9.8 小结269

0章 集群和作业队列271

10.1 集群的优点272

10.2 集群的缺点273

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

10.2.2 Skype全球24小时中断服务274

10.3 常见的集群设计275

10.4 如何启动集群解决方案276

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

10.6 两种集群解决方案277

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

10.6.2 使用Dask并行化Pandas281

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

10.7.1 队列284

10.7.2 发布者/订阅者285

10.7.3 分布式素数计算287

10.8 其他集群工具291

10.9 Docker292

10.9.1 Docker的性能292

10.9.2 Docker的优点295

10.10 小结296

1章 减少内存占用量297

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

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

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

11.2 理解集合占用的内存305

11.3 比较字节和Unicode307

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

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

11.6 DictVectorizer和FeatureHasher简介316

11.7 SciPy稀疏矩阵319

11.8 减少内存占用量的技巧322

11.9 概率数据结构322

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

11.9.2 K值326

11.9.3 布隆过滤器329

11.9.4 LogLog计数器335

11.9.5 实例339

2章 实战经验教训342

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

12.1.1 机器学习中的特征工程343

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

12.1.3 利用开源Python库344

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

12.1.5 推广新的开源包345

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

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

12.2.1 需要多长时间347

12.2.2 探索和规划348

12.2.3 管理预期和交付349

12.3 Numba350

12.3.1 一个简单的示例350

12.3.2 实践和建议352

12.3.3 寻求帮助355

12.4 优化和思维356

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

12.5.1 Adaptive Lab的Python使用情况358

12.5.2 SoMA的设计358

12.5.3 开发方法359

12.5.4 维护SoMA359

12.5.5 给同行的建议360

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

12.6.1 管用的策略360

12.6.2 优化方面的经验教训362

12.6.3 结语364

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

12.7.1 集群设计364

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

12.7.3 构建推荐引擎365

12.7.4 报告和监控365

12.7.5 一些建议366

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

12.8.1 Python在Smesh中扮演的角色366

12.8.2 平台367

12.8.3 实时高性能字符串匹配367

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

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

12.9.1 使用的工具370

12.9.2 数据库370

12.9.3 Web应用371

12.9.4 OCR和翻译371

12.9.5 任务分配和任务队列371

12.9.6 结语372

12.10 Lanyrd的任务队列(2014)372

12.10.1 Python在Lanyrd扮演的角色372

12.10.2 让任务队列表现出色373

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

12.10.4 给同行的建议373


作者介绍:

米夏·戈雷利克,Fast Forward Labs联合创始人,致力于探讨与机器学习研究和利用相关的伦理及现实问题。伊恩·欧日沃尔德,首席数据科学家兼团队指导;PyData伦敦年会的组织者之一;负责运营位于伦敦的咨询公司Mor Consulting Data Science;经常在国际会议上发表演讲。


出版社信息:

暂无出版社相关信息,正在全力查找中!


书籍摘录:

暂无相关书籍摘录,正在全力查找中!



原文赏析:

The main properties of interest in a computing unit are the number of operations it can do in one cycle and how many cycles it can do in one second. The first value is measured by its instructions per cycle (IPC),1 while the latter value is measured by its clock speed. These two measures are always competing with each other when new computing units are being made.

...

Furthermore, while increasing clock speed almost immediately speeds up all programs running on that computational unit (because they are able to do more calculations per second), having a higher IPC can also drastically affect computing by changing the level of vectorization that is possible. Vectorization is when a CPU is provided with multiple pieces of data at a time and is able to operate on all of them at once. This s...


Simply adding more cores to a CPU does not always speed up a program’s execution time. This is because of something known as Amdahl’s law. Simply stated, Amdahl’s law says that if a program designed to run on multiple cores has some routines that must run on one core, this will be the bottleneck for the final speedup that can be achieved by allocating more cores.

...

Furthermore, a major hurdle with utilizing multiple cores in Python is Python’s use of a global interpreter lock (GIL). The GIL makes sure that a Python process can only run one instruction at a time, regardless of the number of cores it is currently using. This means that even though some Python code has access to multiple cores at a time, only one core is running a Python instruction at any given time.

...

While this may...


The Python interpreter does a lot of work to try to abstract away the underlying com‐ puting elements that are being used. At no point does a programmer need to worry about allocating memory for arrays, how to arrange that memory, or in what sequence it is being sent to the CPU. This is a benefit of Python, since it lets you focus on the algorithms that are being implemented. However, it comes at a huge performance cost.

It is important to realize that at its core, Python is indeed running a set of very optimized instructions. The trick, however, is getting Python to perform them in the correct se‐ quence in order to achieve better performance.

...

Python’s abstraction hurts any optimizations that rely on keeping the L1/ L2 cache filled with the relevant data for the next computation. T...


其它内容:

编辑推荐

1.基于Python 3编写,教你如何有效找出计算密集型程序的性能瓶颈,加快代码的执行速度。

2.内容丰富实用,探索设计背后的基本理论,让读者对Python实现有更深入的认识。

3.真实案例,易学易懂。对编程经验丰富的Python程序员,本书将阐述如何充分利用多核体系结构或集群,如何让系统在不丧失可靠性的情况下扩缩容。

4.知识点系统,逻辑清晰。通过本书,读者将会更牢固地掌握NumPy、Cython和剖析器,学会同时管理多个I/O和计算操作。


书籍介绍

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

◆通过本书,读者还可获悉众多问题的具体解决方案;了解众多公司在使用高性能Python进行社交媒体分析、产品化机器学习等过程中遇到的难事、趣事。

◎ 编辑推荐:

本书包括以下内容:

更牢固地掌握NumPy、Cython和剖析器;

了解Python如何抽象底层的计算机体系结构;

通过剖析找出CPU和内存消耗方面的瓶颈;

选择合适的数据结构来编写高效的程序;

提高矩阵和向量计算的速度;

使用工具将Python代码编译成机器代码;

同时管理多个I/O和计算操作;

对多进程代码进行转换,使其能够在本地或远程集群中运行。

使用Docker等工具更快地部署代码。

◎ 内容简介:

本书共有12章,围绕如何进行代码优化和加快实际应用程序的运行速度进行讲解,还介绍了如何解决CPU密集型问题、数据传输和内存密集型问题,如何通过移动数据、PyPy即时编译器和异步I/O提升性能。本书主要包括以下内容:计算机原理、列表和元组、字典和集合、迭代器、Python模块、并发性、集群计算等。最后,本书通过一系列真实案例展现了在应用场景中使用Python时需要注意的问题。


书籍真实打分

  • 故事情节:3分

  • 人物塑造:3分

  • 主题深度:7分

  • 文字风格:8分

  • 语言运用:8分

  • 文笔流畅:8分

  • 思想传递:6分

  • 知识深度:8分

  • 知识广度:5分

  • 实用性:8分

  • 章节划分:8分

  • 结构布局:8分

  • 新颖与独特:9分

  • 情感共鸣:5分

  • 引人入胜:8分

  • 现实相关:6分

  • 沉浸感:9分

  • 事实准确性:7分

  • 文化贡献:7分


网站评分

  • 书籍多样性:6分

  • 书籍信息完全性:8分

  • 网站更新速度:9分

  • 使用便利性:4分

  • 书籍清晰度:5分

  • 书籍格式兼容性:6分

  • 是否包含广告:8分

  • 加载速度:6分

  • 安全性:9分

  • 稳定性:8分

  • 搜索功能:8分

  • 下载便捷性:6分


下载点评

  • 品质不错(114+)
  • 无颠倒(528+)
  • 小说多(639+)
  • 已买(119+)
  • 微信读书(386+)
  • 体验满分(524+)
  • 值得购买(350+)
  • 无水印(350+)
  • 体验差(586+)

下载评价

  • 网友 敖***菡: ( 2025-01-19 16:40:23 )

    是个好网站,很便捷

  • 网友 芮***枫: ( 2024-12-28 04:19:17 )

    有点意思的网站,赞一个真心好好好 哈哈

  • 网友 焦***山: ( 2024-12-26 05:12:40 )

    不错。。。。。

  • 网友 詹***萍: ( 2025-01-09 09:02:02 )

    好评的,这是自己一直选择的下载书的网站

  • 网友 饶***丽: ( 2024-12-23 03:10:02 )

    下载方式特简单,一直点就好了。

  • 网友 后***之: ( 2024-12-22 16:19:57 )

    强烈推荐!无论下载速度还是书籍内容都没话说 真的很良心!

  • 网友 扈***洁: ( 2025-01-02 13:32:30 )

    还不错啊,挺好

  • 网友 孙***美: ( 2024-12-28 19:11:27 )

    加油!支持一下!不错,好用。大家可以去试一下哦

  • 网友 晏***媛: ( 2025-01-12 15:33:46 )

    够人性化!


随机推荐