内容介绍
Python性能分析与优化从基本的概念开始讲解,循序渐进地介绍高级的优化主题。首先介绍了Python的主流性能分析器,以及用于帮助理解性能分析结果的可视化工具。然后介绍了通用的性能优化方法和专门针对Python的性能优化方法,带你浏览该语言的主要结构,让你只需做一点改变,即可迅速改善代码的性能。最后还介绍了一些专门用于数据处理的程序库,教你如何正确地使用如何它们来完成更好的操作。章节目录
第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 常数时间——O(1) 12 1.6.2 线性时间——O(n) 12 1.6.3 对数时间——O(logn) 13 1.6.4 线性对数时间——O(nlogn) 14 1.6.5 阶乘时间——O(n!) 15 1.6.6 平方时间——O(n2) 16 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 cProfile 23 2.2.1 工具的局限 24 2.2.2 支持的API 24 2.2.3 Stats 类 27 2.2.4 性能分析示例 30 2.3 line_profiler 41 2.3.1 kernprof 43 2.3.2 kernprof 注意事项 43 2.3.3 性能分析示例 45 2.4 小结 53 第3 章 可视化——利用GUI 理解性能分析数据 54 3.1 KCacheGrind/pyprof2calltree 54 3.1.1 安装 55 3.1.2 用法 55 3.1.3 性能分析器示例:TweetStats 57 3.1.4 性能分析器示例:倒排索引 60 3.2 RunSnakeRun 64 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 ctypes 90 4.4.1 加载自定义ctypes 90 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 PyPy 118 6.1.1 安装PyPy 119 6.1.2 JIT 编译器 120 6.1.3 沙盒 121 6.1.4 JIT 优化 122 6.1.5 代码示例 124 6.2 Cython 126 6.2.1 安装Cython 127 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 什么时候用Cython 139 6.3.2 什么时候用PyPy 139 6.4 小结 140 第7 章 用Numba、Parakeet 和pandas实现极速数据处理 141 7.1 Numba 141 7.1.1 安装 142 7.1.2 使用Numba 144 7.2 pandas 工具 151 7.2.1 安装pandas 151 7.2.2 用pandas 做数据分析 152 7.3 Parakeet 155 7.3.1 安装Parakeet 156 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
使用说明
1、下载并解压,得出pdf文件炉石传说新版本贫瘠之地的锤炼即将上线,官方也公布了新版本中的一些新卡牌,这些卡牌或许会给天梯冒险注入新的活力与新的对局。下面小编就来介绍一下贫瘠之地的锤炼萨满新卡大地亡魂的效果
得物上不仅有商家入驻,还有很多个人卖家入驻。而对于买家来说,比较关心买东西的店家是商家还是个人卖家。那么怎么看是不是个人卖家呢?下面一起来看看吧!
教程频道为您提供秦时明月世界噬牙狱断水怎么打 噬牙狱断水打法攻略解决方案,还有更多全面的秦时明月世界软件教程手册,无论是新奇小软件的操作还是专业软件的使用技巧,教程都会为您解疑释惑。
黎明觉醒酿酒厂怎么玩?酿酒厂是地图中众多地点中的一个,酿酒厂地处红木林地,交通十分便利,在酿酒厂也会有很多资源可以获取。那么黎明觉醒酿酒厂的玩法是什么呢?还有很多小伙
战魂铭人近期更新了很多的装备,很多玩家都非常喜欢这款游戏,近日不少玩家都在讨论风火轮这个装备,很多玩家都想知道该通过什么方式来获得这个装备,今天就为大家带来关于这个方
教程频道为您提供星露谷物语怎么找罗宾建水井 水井建造要求及消耗介绍解决方案,还有更多全面的星露谷物语软件教程手册,无论是新奇小软件的操作还是专业软件的使用技巧,教程都会为您解疑释惑。
古镜记围棋关卡怎么通过,在古镜记游戏中很多小伙伴都不清楚围棋这一关怎么通过,下面小编为大家带来了最新攻略。
来不及了快上车角色怎么升级?很多玩家都非常喜欢这款游戏,该游戏目前已经和玩家们见面了,在游戏中,我们可以通过升级我们的角色,让游戏更加的有乐趣,不少玩家都想知道该如何
黎明觉醒托腮板怎么获得?托腮板是只适用于佩戴在狙击枪上面的一个配件,其他的枪械是不能佩戴的,不过它的作用也很大的,既可以减少后坐力还可以提升换弹速度。那么黎明觉醒中托
风火轮是近期战魂铭人游戏版本更新后的一个新装备,很多玩家都非常关注这个装备,今天就为大家带来关于这个装备的具体介绍,通过下面的文章内容,我们来具体了解一下风火轮的功能