Python 高性能, 2/e (Python High Performance, 2/e)

[加] 加布麗埃勒·拉納諾

買這商品的人也買了...

商品描述

本書主要介紹如何讓Python 程序發揮強大性能,內容涵蓋針對數值計算和科學代碼的優化,以及用於提高Web 服務和應用響應速度的策略。具體內容有:基準測試與剖析、純粹的Python 優化、基於NumPy和Pandas 的快速數組操作、使用Cython 獲得C 語言性能、編譯器探索、實現並發性、並行處理、分佈式處理、高性能設計等。

作者簡介

加布麗埃勒•拉納諾(Gabriele Lanaro)

數據科學家、軟件工程師,對機器學習、
信息檢索、數值計算可視化、Web開發、
計算機圖形學和系統管理有濃厚的興趣。
開源軟件包chemlab和chemview的開發者。
現就職於Tableau軟件公司。

目錄大綱

第1章基準測試與剖析1 
1.1設計應用程序2 
1.2編寫測試和基準測試程序7 
1.3使用pytest-benchmark編寫更佳的測試和基準測試程序10 
1.4使用cProfile找出瓶頸12 
1.5使用line_profiler逐行進行剖析16 
1.6優化代碼17 
1.7模塊dis 19 
1.8使用memory_profiler剖析內存使用情況19 
1.9小結21 

第2章純粹的Python優化22 
2.1有用的算法和數據結構22 
2.1.1列表和雙端隊列23 
2.1.2字典25 
2.1.3集28 
2.1.4堆29 
2.1.5字典樹30 
2.2緩存和memoization 32 
2.3推導和生成器34 
2.4小結36 

第3章使用NumPy和Pandas快速執行數組操作37
3.1 NumPy基礎37 
3.1.1創建數組38 
3.1.2訪問數組39 
3.1.3廣播43 
3.1.4數學運算45 
3.1.5計算範數46 
3.2使用NumPy重寫粒子模擬器47 
3.3使用numexpr最大限度地提高性能49 
3.4 Pandas 51 
3.4.1 Pandas基礎51 
3.4.2使用Pandas執行數據庫式操作55 
3.5小結59 

第4章使用Cython獲得C語言性能60 
4.1編譯Cython擴展60 
4.2添加靜態類型62 
4.2.1變量63 
4.2 .2函數64 
4.2.3類65 
4.3共享聲明66 
4.4使用數組67 
4.4.1 C語言數組和指針67 
4.4.2 NumPy數組69
4.4.3類型化內存視圖70 
4.5使用Cython編寫粒子模擬器72 
4.6剖析Cython代碼75 
4.7在Jupyter中使用Cython 78 
4.8小結80 

第5章探索編譯器82 
5.1 Numba 82 
5.1.1 Numba入門83 
5.1.2類型特殊化84 
5.1.3對像模式和原生模式85 
5.1.4 Numba和NumPy 88 
5.1.5 JIT類91 
5.1.6 Numba的局限性94 
5.2 PyPy項目95 
5.2.1安裝PyPy 95 
5.2.2在PyPy中運行粒子模擬器96 
5.3其他有趣的項目97 
5.4小結97 

第6章實現並發性98 
6.1異步編程98 
6.1.1等待I/O 99 
6.1.2並發99
6.1.3回調函數101 
6.1.4 future 104 
6.1.5事件循環105 
6.2 asyncio框架108 
6.2.1協程108 
6.2.2將阻塞代碼轉換為非阻塞代碼111 
6.3響應式編程113 
6.3.1被觀察者113 
6.3.2很有用的運算符115 
6.3.3 hot被觀察者和cold被觀察者118 
6.3.4打造CPU監視器121 
6.4小結123 

第7章並行處理124 
7.1並行編程簡介124 
7.2使用多個進程127 
7.2.1 Process和Pool類127 
7.2.2接口Executor 129 
7.2.3使用蒙特卡洛方法計算pi的近似值130 
7.2.4同步和鎖132 
7.3使用OpenMP編寫並行的Cython代碼134 
7.4並行自動化136
7.4.1 Theano初步137 
7.4.2 Tensorflow 142 
7.4.3在GPU中運行代碼144 
7.5小結146 

第8章分佈式處理148 
8.1分佈式計算簡介148 
8.2 Dask 151 
8.2.1有向無環圖151 
8.2. 2 Dask數組152 
8.2.3 Dask Bag和DataFrame 154 
8.2.4 Dask distributed 158 
8.3使用PySpark 161 
8.3.1搭建Spark和PySpark環境161 
8.3.2 Spark架構162 
8.3.3彈性分佈式數據集164 
8.3.4 Spark DataFrame 168 
8.4使用mpi4py執行科學計算169 
8.5小結171 

第9章高性能設計173 
9.1選擇合適的策略173 
9.1.1普通應用程序174
9.1.2數值計算代碼174 
9.1.3大數據176 
9.2組織代碼176 
9.3隔離、虛擬環境和容器178 
9.3.1使用conda環境178 
9.3.2虛擬化和容器179 
9.4持續集成183 
9.5小結184