展开全部

主编推荐语

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

内容简介

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

本书共有12章,围绕如何进行代码优化和加快实际应用程序的运行速度进行讲解,还介绍了如何解决CPU密集型问题、数据传输和内存密集型问题。

本书通过一系列真实案例展现了在应用场景中使用Python时需要注意的问题。

目录

  • 版权信息
  • 内容提要
  • 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 给同行的建议
  • 作者简介
  • 封面介绍
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。