-
内容大纲
你的Python代码也许运行正确,但是你需要运行得更快。本书经过拓展后的新版向你展示了如何在高数据量程序中定位性能瓶颈,显著提高代码速度。通过探索设计选择背后的基础理论,《高性能Python》将帮助你更深入地理解Python的实现。该如何利用多核架构和集群?或者该如何构建能够自由伸缩同时又不失可靠性的系统?有经验的Python程序员会学到很多问题的具体解决方案,了解到各个公司如何将高性能Python应用于社交媒体分析、产品机器学习等场景的曲折故事。 -
作者介绍
-
目录
Foreword
Preface
1.Understanding Performant Python
The Fundamental Computer System
Computing Units
Memory Units
Communications Layers
Putting the Fundamental Elements Together
Idealized Computing Versus the Python Virtual Machine
So Why Use Python?
How to Be a Highly Performant Programmer
Good Working Practices
Some Thoughts on Good Notebook Practice
Getting the Joy Back into Your Work
2.Profiling to Find Bottlenecks.
Profiling Efficiently
Introducing the Julia Set
Calculating the Full Julia Set
Simple Approaches to Timing—print and a Decorator
Simple Timing Using the Unix time Command
Using the cProfile Module
Visualizing cProfile Output with SnakeViz
Using line_profiler for Line-by-Line Measurements
Using memory_profiler to Diagnose Memory Usage
Introspecting an Existing Process with PySpy
Bytecode: Under the Hood
Using the dis Module to Examine CPython Bytecode
Different Approaches, Different Co mplexity
Unit Testing During Optimization to Maintain Correctness
No-op @profile Decorator
Strategies to Profile Your Code Successfully
Wrap-Up
3.Lists and Tuples
A More Efficient Search
Lists Versus Tuples
Lists as Dynamic Arrays
Tuples as Static Arrays
Wrap-Up
4.Dictionaries and Sets.
How Do Dictionaries and Sets Work?
Inserting and Retrieving
Deletion
Resizing
Hash Functions and Entropy
Dictionaries and Namespaces
Wrap-Up
5.Iterators and Generators.
Iterators for Infinite Series
Lazy Generator Evaluation
Wrap-Up
6.Matrix and Vector Computation.
Introduction to the Problem
Aren't Python Lists Good Enough?
Problems with Allocating Too Much
Memory Fragmentation
Understanding perf
Making Decisions with perf's Output
Enter numpy
Applying numpy to the Diffusion Problem
Memory Allocations and In-Place Operations
Selective Optimizations: Finding What Needs to Be Fixed
numexpr: Making In-Place Operations Faster and Easier
A Cautionary Tale: Verify “Optimizations"(scipy)
Lessons from Matrix Optimizations
Pandas
Pandas's Internal Model
Applying a Function to Many Rows of Data
Building DataFrames and Series from Partial Results Rather than
Concatenating
There's More Than One (and Possibly a Faster) Way to Do a Job
Advice for Effective Pandas Development asu
Wrap-Up
7.Compiling to C.
What Sort of Speed Gains Are Possible?
JIT Versus AOT Compilers
Why Does Type Information Help the Code Run Faster?
Using a C Compiler
Reviewing the Julia Set Example
Cython
Compiling a Pure Python Version Using Cython
pyximport
Cython Annotations to Analyze a Block of Code
Adding Some Type Annotations
Cython and numpy
Parallelizing the Solution with OpenMP on One Machine
Numba
Numba to Compile NumPy for Pandas
PyPy
Garbage Collection Differences
Running PyPy and Installing Modules
A Summary of Speed Improvements
When to Use Each Technology
Other Upcoming Projects
Graphics Processing Units (GPUs)
Dynamic Graphs: PyTorch
Basic GPU Profiling
Performance Considerations of GPUs
When to Use GPUs
Foreign Function Interfaces
ctypes
cffi
f2py
CPython Module
Wrap-Up
8.Asynchronous l/0.
9.The multiprocessing Module.
10.Clusters and Job Queues
11.Using Less RAM.
12.Lessons from the Field.
Index
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...