新書推薦:
《
养育不好惹的小孩
》
售價:HK$
77.3
《
加加美高浩的手部绘画技法 II
》
售價:HK$
89.4
《
卡特里娜(“同一颗星球”丛书)
》
售價:HK$
87.4
《
伟大民族:从路易十五到拿破仑的法国史(方尖碑)
》
售價:HK$
188.2
《
古今“书画同源”论辨——中国书法与中国绘画的关系问题兼中国画笔墨研究
》
售價:HK$
132.2
《
《日本文学史序说》讲演录
》
售價:HK$
72.8
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:HK$
99.7
《
治盗之道:清代盗律的古今之辨
》
售價:HK$
122.1
編輯推薦:
对于Python程序员来说,仅仅知道如何写代码是不够的,还要能够充分利用关键代码的处理能力。本书将讨论如何对Python代码进行性能分析,找出性能瓶颈,并通过不同的性能优化技术消除瓶颈。
本书从基本的概念开始,循序渐进地介绍高级的优化主题。首先介绍了Python的主流性能分析器,以及用于帮助理解性能分析结果的可视化工具。然后介绍了通用的性能优化方法和专门针对Python的性能优化方法,带你浏览该语言的主要结构,让你只需做一点改变,即可迅速改善代码的性能。*后介绍了一些专门用于数据处理的程序库,教你如何正确地使用它们以获得*性能。
如果你是一名Python开发者,想优化Python代码的性能,或是想进一步提升编程能力,那么本书非常适合你阅读。
通过阅读本书,你将能够:
掌握逐步优化代码的方法,学会使用不同的性能分析工具
理解性能分析器的概念,学会如何观察输出结果
利用性能分析工具解释可视化的性能输出结果,改善脚本的性能
用Cython快速创建Python与C语言混合的应用程序
利用PyPy改善Python代码的性能
通过Numba、Parakeet和pan
內容簡介:
本书首先介绍什么是性能分析,性能分析如何在项目开发周期中发挥作用,以及通过在项目中进行性能分析实践能够取得的效果。紧接着介绍分析性能所需的核心工具(性能分析器和可视化性能分析器)。然后介绍一系列性能优化技术,后一章会介绍一个具有实际意义的优化案例。
關於作者:
Fernando Doglio
Globant公司软件架构师。过去十年一直从事Web开发工作,期间使用了大多数最前沿的技术,如PHP、Ruby on Rails、MySQL、Python、Node.js、AngularJS、REST API等。Fernando喜欢钻研新事物,他的GitHub账户每个月也会因此获得回购。他还是开源拥护者,并通过网站lookingforpullrequests.com来获得人们的支持。Fernando另著有Pro REST API Development with Node.js。他的Twitter账号是@deleteman123。
目錄 :
第1章 性能分析基础1
1.1 什么是性能分析1
1.1.1 基于事件的性能分析2
1.1.2 统计式性能分析4
1.2 性能分析的重要性5
1.3 性能分析可以分析什么6
1.3.1 运行时间6
1.3.2 瓶颈在哪里8
1.4 内存消耗和内存泄漏8
1.5 过早优化的风险11
1.6 运行时间复杂度12
1.6.1 常数时间O112
1.6.2 线性时间On12
1.6.3 对数时间Ologn13
1.6.4 线性对数时间Onlogn14
1.6.5 阶乘时间On!15
1.6.6 平方时间On216
1.7 性能分析最佳实践18
1.7.1 建立回归测试套件18
1.7.2 思考代码结构18
1.7.3 耐心18
1.7.4 尽可能多地收集数据19
1.7.5 数据预处理19
1.7.6 数据可视化19
1.8 小结21
第2章 性能分析器22
2.1 认识新朋友:性能分析器22
2.2 cProfile23
2.2.1 工具的局限24
2.2.2 支持的API24
2.2.3 Stats类27
2.2.4 性能分析示例30
2.3 line_profiler41
2.3.1 kernprof43
2.3.2 kernprof注意事项43
2.3.3 性能分析示例45
2.4 小结53
第3章 可视化利用GUI理解性能分析数据54
3.1 KCacheGrindpyprof2calltree54
3.1.1 安装55
3.1.2 用法55
3.1.3 性能分析器示例:TweetStats57
3.1.4 性能分析器示例:倒排索引60
3.2 RunSnakeRun64
3.2.1 安装65
3.2.2 使用方法65
3.2.3 性能分析示例:最小公倍数66
3.2.4 性能分析示例:用倒排索引查询68
3.3 小结75
第4章 优化每一个细节76
4.1 函数返回值缓存和函数查询表76
4.1.1 用列表或链表做查询表79
4.1.2 用字典做查询表80
4.1.3 二分查找80
4.1.4 查询表使用案例80
4.2 使用默认参数84
4.3 列表综合表达式与生成器85
4.4 ctypes90
4.4.1 加载自定义ctypes90
4.4.2 加载一个系统库92
4.5 字符串连接92
4.6 其他优化技巧96
4.7 小结98
第5章 多线程与多进程99
5.1 并行与并发99
5.2 多线程100
5.3 线程101
5.3.1 用thread模块创建线程102
5.3.2 用threading模块创建线程106
5.4 多进程112
5.5 小结117
第6章 常用的优化方法118
6.1 PyPy118
6.1.1 安装PyPy119
6.1.2 JIT编译器120
6.1.3 沙盒121
6.1.4 JIT优化122
6.1.5 代码示例124
6.2 Cython126
6.2.1 安装Cython127
6.2.2 建立一个Cython模块127
6.2.3 调用C语言函数129
6.2.4 定义类型130
6.2.5 定义函数类型131
6.2.6 Cython示例133
6.2.7 定义类型的时机选择134
6.2.8 限制条件138
6.3 如何选择正确的工具139
6.3.1 什么时候用Cython139
6.3.2 什么时候用PyPy139
6.4 小结140
第7章 用Numba、Parakeet和pandas实现极速数据处理141
7.1 Numba141
7.1.1 安装142
7.1.2 使用Numba144
7.2 pandas工具151
7.2.1 安装pandas151
7.2.2 用pandas做数据分析152
7.3 Parakeet155
7.3.1 安装Parakeet156
7.3.2 Parakeet是如何工作的156
7.4 小结158
第8章 付诸实践159
8.1 需要解决的问题159
8.1.1 从网站上抓取数据159
8.1.2 数据预处理162
8.2 编写初始代码162
8.2.1 分析代码性能168
8.2.2 数据分析代码的优化172
8.3 小结178