热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python高性能第二版_Python高性能第2版

第1章基准测试与剖析11.1设计应用程序21.2编写测试和基准测试程序71.3使用pytest-benchmark编写更佳的测试和基准测试程序101.4使用cProf

第 1 章 基准测试与剖析 1

1.1 设计应用程序 2

1.2 编写测试和基准测试程序 7

1.3 使用pytest-benchmark 编写更佳的测试和基准测试程序 10

1.4 使用cProfile 找出瓶颈 12

1.5 使用line_profiler 逐行进行剖析 16

1.6 优化代码 17

1.7 模块dis 19

1.8 使用memory_profiler 剖析内存使用情况 19

1.9 小结 21

第 2 章 纯粹的Python 优化 22

2.1 有用的算法和数据结构 22

2.1.1 列表和双端队列 23

2.1.2 字典 25

2.1.3 集 28

2.1.4 堆 29

2.1.5 字典树 30

2.2 缓存和memoization 32

2.3 推导和生成器 34

2.4 小结 36

第3 章 使用NumPy 和Pandas 快速执行数组操作 37

3.1 NumPy 基础 37

3.1.1 创建数组 38

3.1.2 访问数组 39

3.1.3 广播 43

3.1.4 数学运算 45

3.1.5 计算范数 46

3.2 使用NumPy 重写粒子模拟器 47

3.3 使用numexpr zui大限度地提高性能 49

3.4 Pandas 51

3.4.1 Pandas 基础 51

3.4.2 使用Pandas 执行数据库式操作 55

3.5 小结 59

第4 章 使用Cython 获得C 语言性能 60

4.1 编译Cython 扩展 60

4.2 添加静态类型 62

4.2.1 变量 63

4.2.2 函数 64

4.2.3 类 65

4.3 共享声明 66

4.4 使用数组 67

4.4.1 C 语言数组和指针 67

4.4.2 NumPy 数组 69

4.4.3 类型化内存视图 70

4.5 使用Cython 编写粒子模拟器 72

4.6 剖析Cython 代码 75

4.7 在Jupyter 中使用Cython 78

4.8 小结 80

第5 章 探索编译器 82

5.1 Numba 82

5.1.1 Numba 入门 83

5.1.2 类型特殊化 84

5.1.3 对象模式和原生模式 85

5.1.4 Numba 和NumPy 88

5.1.5 JIT 类 91

5.1.6 Numba 的局限性 94

5.2 PyPy 项目 95

5.2.1 安装PyPy 95

5.2.2 在PyPy 中运行粒子模拟器 96

5.3 其他有趣的项目 97

5.4 小结 97

第6 章 实现并发性 98

6.1 异步编程 98

6.1.1 等待I/O 99

6.1.2 并发 99

6.1.3 回调函数 101

6.1.4 future 104

6.1.5 事件循环 105

6.2 asyncio 框架 108

6.2.1 协程 108

6.2.2 将阻塞代码转换为非阻塞代码 111

6.3 响应式编程 113

6.3.1 被观察者 113

6.3.2 很有用的运算符 115

6.3.3 hot 被观察者和cold 被观察者 118

6.3.4 打造CPU 监视器 121

6.4 小结 123

第7 章 并行处理 124

7.1 并行编程简介 124

7.2 使用多个进程 127

7.2.1 Process 和Pool 类 127

7.2.2 接口Executor 129

7.2.3 使用蒙特卡洛方法计算pi 的近似值 130

7.2.4 同步和锁 132

7.3 使用OpenMP 编写并行的Cython代码 134

7.4 并行自动化 136

7.4.1 Theano 初步 137

7.4.2 Tensorflow 142

7.4.3 在GPU 中运行代码 144

7.5 小结 146

第8 章 分布式处理 148

8.1 分布式计算简介 148

8.2 Dask 151

8.2.1 有向无环图 151

8.2.2 Dask 数组 152

8.2.3 Dask Bag 和DataFrame 154

8.2.4 Dask distributed 158

8.3 使用PySpark 161

8.3.1 搭建Spark 和PySpark 环境 161

8.3.2 Spark 架构 162

8.3.3 弹性分布式数据集 164

8.3.4 Spark DataFrame 168

8.4 使用mpi4py 执行科学计算 169

8.5 小结 171

第9 章 高性能设计 173

9.1 选择合适的策略 173

9.1.1 普通应用程序 174

9.1.2 数值计算代码 174

9.1.3 大数据 176

9.2 组织代码 176

9.3 隔离、虚拟环境和容器 178

9.3.1 使用conda 环境 178

9.3.2 虚拟化和容器 179

9.4 持续集成 183

9.5 小结 184



推荐阅读
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 深入解析for与foreach遍历集合时的性能差异
    本文将详细探讨for循环和foreach(迭代器)在遍历集合时的性能差异,并通过实际代码示例和源码分析,帮助读者理解这两种遍历方式的不同之处。文章内容丰富且专业,旨在为编程爱好者提供有价值的参考。 ... [详细]
  • 本文详细介绍了数组和线性表这两种常见的数据结构。数组是一种由类型名、标识符及维度构成的复合数据类型,其元素类型由类型名决定,维数表示数组中元素的数量。线性表则是一种逻辑结构,其中的数据元素呈现一对一的关系,便于实现和操作。 ... [详细]
author-avatar
只属于我一个人的秘密
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有