Python语言是一种脚本语言,其应用领域非常广泛,包括数据分析、自然语言处理、机器学习、科学计算、推荐系统构建等。 本书共有12章,围绕如何行代码优化和加快实际应用的运行速度行详细讲解。本书主要包含以下主题:计算机内部结构的背景知识、列表和元组、字典和集合、迭代器和生成器、矩阵和矢量计算、并发、集群和工作队列等。*后,通过一系列真实案例展现了在应用场景中需要注意的问题。 本书适合初级和中级Python程序员、有一定Python语言基础想要得到阶和提高的读者阅读。

第1章 理解高性能Python

1.1 基本的计算机系统

1.1.1 计算单元

1.1.2 存储单元

1.1.3 通信层

1.2 将基本的元素组装到一起

理想计算模型和Python虚拟机

1.3 为什么使用Python

第2章 通过性能分析找到瓶颈

2.1 高效地分析性能

2.2 Julia集合的介绍

2.3 计算完整的Julia集合

2.4 计时的简单方法——打印和修饰

2.5 用UNIX的time命令进行简单的计时

2.6 使用cProfile模块

2.7 用runsnakerun对cProfile的输出进行可视化

2.8 用line_profiler进行逐行分析

2.9 用memory_profiler诊断内存的用量

2.10 用heapy调查堆上的对象

2.11 用dowser实时画出变量的实例

2.12 用dis模块检查CPython字节码

不同的方法,不同的复杂度

2.13 在优化期间进行单元测试保持代码的正确性

No-op的@profile修饰器

2.14 确保性能分析成功的策略

2.15 小结

第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 小结

第7章 编译成C

7.1 可能获得哪种类型的速度提升

7.2 JIT和AOT编译器的对比

7.3 为什么类型检查有助代码更快运行

7.4 使用C编译器

7.5 复习Julia集的例子

7.6 Cython

7.6.1 使用Cython编译纯Python版本

7.6.2 Cython注解来分析代码块

7.6.3 增加一些类型注解

7.7 Shed Skin

7.7.1 构建扩展模块

7.7.2 内存拷贝的开销

7.8 Cython和numpy

在一台机器上使用OpenMP来做并行解决方案

7.9 Numba

7.10 Pythran

7.11 PyPy

7.11.1 垃圾收集的差异

7.11.2 运行PyPy并安装模块

7.12 什么时候使用每种工具

7.12.1 其他即将出现的项目

7.12.2 一个图像处理单元(GPU)的注意点

7.12.3 一个对未来编译器项目的展望

7.13 外部函数接口

7.13.1 ctypes

7.13.2 cffi

7.13.3 f2py

7.13.4 CPython模块

7.14 小结

第8章 并发

8.1 异步编程介绍

8.2 串行爬虫

8.3 gevent

8.4 tornado

8.5 AsyncIO

8.6 数据库的例子

8.7 小结

第9章 multiprocessing模块

9.1 multiprocessing模块综述

9.2 使用蒙特卡罗方法来估算pi

9.3 使用多进程和多线程来估算pi

9.3.1 使用Python对象

9.3.2 并行系统中的随机数

9.3.3 使用numpy

9.4 寻找素数

工作队列

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

9.5.1 串行解决方案

9.5.2 Naïve Pool解决方案

9.5.3 Less Naïve Pool解决方案

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 给Value加锁

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 为简单的本地集群使用Parallel Python模块

10.6.2 使用IPython Parallel来支持研究

10.7 为鲁棒生产集群的NSQ

10.7.1 队列

10.7.2 发布者/订阅者

10.7.3 分布式素数计算器

10.8 看一下其他的集群化工具

10.9 小结

第11章 使用更少的RAM

11.1 基础类型的对象开销高

Array模块以廉价的方式存储了许多基础对象

11.2 理解集合中的RAM使用

11.3 字节和Unicode的对比

11.4 高效地在RAM中存储许多文本

在800万个符号上尝试这些方法

11.5 使用更少RAM的窍门

11.6 概率数据结构

11.6.1 使用1字节的Morris计数器来做近似计数

11.6.2 K最小值

11.6.3 布隆过滤器

11.6.4 LogLog计数器

11.6.5 真实世界的例子

第12章 现场教训

12.1 自适应实验室(Adaptive Lab)的社交媒体分析(SoMA)

12.1.1 自适应实验室(Adaptive Lab)使用的Python

12.1.2 SoMA的设计

12.1.3 我们的开发方法论

12.1.4 维护SoMA

12.1.5 对工程师同行的建议

12.2 使用RadimRehurek.com让深度学习飞翔

12.2.1 最佳时机

12.2.2 优化方面的教训

12.2.3 总结

12.3 在Lyst.com的大规模产品化的机器学习

12.3.1 Python在Lyst的地位

12.3.2 集群设计

12.3.3 在快速前进的初创公司中做代码评估

12.3.4 构建推荐引擎

12.3.5 报告和监控

12.3.6 一些建议

12.4 在Smesh的大规模社交媒体分析

12.4.1 Python在Smesh中的角色

12.4.2 平台

12.4.3 高性能的实时字符串匹配

12.4.4 报告、监控、调试和部署

12.5 PyPy促成了成功的Web和数据处理系统

12.5.1 先决条件

12.5.2 数据库

12.5.3 Web应用

12.5.4 OCR和翻译

12.5.5 任务分发和工作者

12.5.6 结论

12.6 在Lanyrd.com中的任务队列

12.6.1 Python在Lanyrd中的角色

12.6.2 使任务队列变高性能

12.6.3 报告、监控、调试和部署

12.6.4 对开发者同行的建议

Python高性能编程相关推荐

  1. python后台开发性能问题_《Python高性能编程》——2.14 确保性能分析成功的策略-阿里云开发者社区...

    本节书摘来自异步社区<Python高性能编程>一书中的第2章,第2.14节,作者[美] 戈雷利克 (Micha Gorelick),胡世杰,徐旭彬 译,更多章节内容可以访问云栖社区&quo ...

  2. python花猫_Python猫荐书系列之五:Python高性能编程

    稍微关心编程语言的使用趋势的人都知道,最近几年,国内最火的两种语言非 Python 与 Go 莫属,于是,隔三差五就会有人问:这两种语言谁更厉害/好找工作/高工资-- 对于编程语言的争论,就是猿界的生 ...

  3. Python猫荐书系列之五:Python高性能编程

    2019独角兽企业重金招聘Python工程师标准>>> 稍微关心编程语言的使用趋势的人都知道,最近几年,国内最火的两种语言非 Python 与 Go 莫属,于是,隔三差五就会有人问: ...

  4. Python高性能编程指南大纲

    Time: 20190925 关于本系列学习大纲 Python是一门开箱即用的语言了,但是往往会停在基础使用水平不能再往前一步,实际上它有非常多值得深挖,深入理解的点,本系列主要学习自<High ...

  5. python高性能编程第一章读书笔记

    计算机底层组件分为三大基本部分:计算单元.存储单元以及两者之间的连接. 计算单元:具有将接收到的任意输入转换成输出的能力以及改变当前处理状态的能力.CPU是最常见的计算单元.它的主要属性是其每个周期能 ...

  6. python微控制器编程pdf_Python高性能编程 中文高清pdf完整版[17MB]

    Python语言是一种脚本语言,其应用领域非常广泛,包括数据分析.自然语言处理.机器学习.科学计算.推荐系统构建等.Python高性能编程共有12章,围绕如何进行代码优化和加快实际应用的运行速度进行详 ...

  7. 面试分析《疯狂Python讲义》PDF代码+《Python核心编程第3版》PDF代码问题

    python语言现在很流行了,除了用在学校,也用在很多行业.python学起来较为简单,语法容易理解,也可用于数据分析. 国内的教材推荐看<疯狂python讲义>,对比国外也有很多好的参考 ...

  8. 【洁洁送书第一期】Python高并发与高性能编程: 原理与实践

    这里写目录标题 Python高并发.高性能 解决问题 书本介绍 关于作者 直播预告 Python高并发.高性能 Python成为时下技术革新的弄潮儿,全民Python的发展趋势让人们不再满足于简单地运 ...

  9. python语言编程入门先学什么-自学编程入门,先学什么语言好?

    强烈推荐Python.其实这个问题在入门阶段一直是争议十分大的问题,n多语言,n多推荐,到最后搞到新手一会听说这种语言适合新手,于是学习这种语言,一会又有人说xx语言是垃圾.弱爆了,学了也没用,之类的 ...

  10. python sanic orm_Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践

    SanicCRUD-vue Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践 背景 本项目将使用Sanic + Vue2 + Webpack2 配合最简单CRUD的逻辑来展示一个 ...

最新文章

  1. Hibernate+Spring-orm的基本方法总结
  2. (写给像我一样刚离开校园进入公司的小菜鸟)在领域架构下,如何实现简单的展示页面以及增删改查(第二步)...
  3. 项目管理风险控制及注意事项
  4. 运行时错误76未找到路径怎么解决_自动化测试解决竞争问题?等待一下就行了~...
  5. linux中的信号2——进程如何处理信号?
  6. python box2d模拟平抛运动_论述如何基于Box2D模拟星球重力效果
  7. 网站随机动态密码代码
  8. easypoi list中的map导出_EasyPOI简单用例,简单有效
  9. 吸血鬼数字—THINKING IN JAVA中一道习题
  10. java贪吃蛇源代码_java贪吃蛇源代码详解
  11. 北大飞跃手册_飞跃手册 | 保研篇——北京大学
  12. 计算机单位mb和m大小一样吗,MB和M哪个容量大?
  13. 【每日新闻早报】9月17日 星期二
  14. 微信android登录协议分析,手机微信协议分析,请教··
  15. 视频教程-【直通华为HCNA/HCNP系列R篇7】可靠性功能原理及配置与管理-华为认证
  16. 2020测试工具索引
  17. OPC DA 与 OPC UA区别
  18. python建立窗口并美化_Python GUI教程(十六):在PyQt5中美化和装扮图形界面
  19. Quartz源码解读-任务是如何定时执行的
  20. macOS中快速打开终端

热门文章

  1. SSM框架01--springmvc
  2. 违反计算机信息网络国际联网安全,给你普及一下为了加强对计算机信息网络国际联网的安全保护,维护公共秩序和社会稳定,早在1997年12月30日【刁爱青吧】_百度贴吧...
  3. java关系操作符==和equals()区别
  4. java 环境变量 ln s_java的环境变量
  5. php中传址调用,PHP中foreach引用传地址
  6. cv如何连接mysql_Naicvat操作数据库的基本操作
  7. dimp是什么意思_单目标追踪论文阅读系列(八)——《DIMP(ICCV2019)》
  8. 山西计算机职业学校排名2015,2015山西专科学校排名及排行榜
  9. 2021谷饶中学高考成绩查询,2020汕头地理生物中考成绩查询入口
  10. defunct 进程占用端口_纯干货:23个服务器常见问题处理方法!