商品描述
【簡介】 突破效能瓶頸,掌握多核心、GPU加速與大規模資料處理技巧。 實務方法×業界案例,帶你用Python打造生產級效能。 跨越記憶體限制、善用GPU,GenAI與生產化ML的最佳效能解方。 「Ian與Micha的新書不僅介紹現代效能工具,也深入探討程式優化的普遍原則。每一位Python開發者都應該閱讀此書!」 — Mikhail Timonin,量化開發者,Engelhart 不論你是要處理龐大資料、打造AI產品,還是單純想讓程式更流暢,新版都提供了比前版更強化的工具與方法,讓你的Python程式真正跑出高效能。 收錄GenAI、機器學習產品化等實戰案例,讓你的Python程式在真實環境中全面升級。 ---------------------------------------------------- 或許你的Python程式已經能正確運行,但若能跑得更快,會為你帶來什麼改變?全新第三版《高效能Python程式設計》將引導你找出程式在高資料量環境下的效能瓶頸,並透過各種設計方法與背後的理論基礎,幫助你更深入理解Python的運作,進而寫出真正高效的程式碼。 本書不只涵蓋多核心、叢集與編譯的技巧,也帶你探索如何突破RAM限制、活用GPU加速,甚至在 GenAI、機器學習產品化等場景中提升效能。你將看到許多來自業界的實戰案例,這些公司如何善用高效能Python進行社群分析、AI應用到生產級系統。作者Micha Gorelick與Ian Ozsvald更分享了多年經驗與實用方法,幫助資深Python開發者在不犧牲可靠性的前提下,靈活擴展或縮小系統,迎戰真實世界的效能挑戰。 更深入掌握NumPy、Cython與效能分析器。 瞭解Python如何將底層電腦架構抽象化。 進行效能分析來找出CPU時間與記憶體的使用瓶頸。 利用合適的資料結構來寫出高效的程式。 提升矩陣與向量運算的速度。 使用Pandas、Dask與Polars來快速處理DataFrame。 加快神經網路與GPU的計算速度。 使用工具來將Python編譯為機器碼。 同時管理多個I/O與計算操作。 轉換multiprocessing程式碼,並在本地或遠端叢集上運行。【目錄】 第一章 瞭解高性能Python 基本電腦系統 理想化的計算vs. Python虛擬機器 那為什麼還要用Python? 如何成為高效能的程式開發者 Python的未來 第二章 透過效能分析來找出瓶頸 有效率地分析 介紹Julia set 計算完整的Julia set 簡單的計時法—print與decorator 使用Unix time命令來做簡單的計時 使用cProfile模組 使用SnakeViz來將cProfile的輸出視覺化 使用line_profiler來逐行測量 使用memory_profiler來診斷記憶體的使用情況 一起分析CPU與記憶體:使用Scalene 用PySpy來自檢既有的程序 在時間軸上做互動式呼叫堆疊分析:使用VizTracer Bytecode:檢視底層 在優化過程中進行單元測試,以維持正確 成功分析程式碼的策略 第三章 串列與tuple 更有效率的搜尋法 串列vs. tuple 第四章 字典與集合 字典與集合如何運作? 第五章 迭代器與產生器 處理無限序列的迭代器 延後產生器求值 第六章 矩陣與向量計算 問題介紹 Python串列不夠好嗎? 記憶體碎片化 用numpy來處理擴散問題 numexpr:讓就地操作更快速與更輕易 圖形處理單元(GPU) 警世故事:驗證「優化」(scipy) 從矩陣優化得到的教訓 第七章 Pandas、Dask與Polars Pandas 使用Dask來處理分散的資料結構與DataFrame 用Polars來獲得快速的DataFrames 第八章 編譯為C 可能提升多少速度? JIT vs. AOT編譯器 為何型態資訊可幫助程式跑得更快? 使用C編譯器 再談Julia set範例 Cython pyximport Cython與numpy Numba PyPy 速度改善方法總結 使用各項技術的時機 外部函式介面 第九章 非同步I/O 非同步編程簡介 async/await如何運作? 共享CPU–I/O工作負載 第十章 multiprocessing模組 multiprocessing模組概要 使用Monte Carlo法來估計pi 使用程序與執行緒來估計pi 尋找質數 使用跨程序通訊來檢驗質數 使用multiprocessin來共享numpy資料 同步檔案與變數存取 第十一章 叢集與任務佇列 叢集的好處 叢集的缺點 常見的叢集設計 如何開始採用叢集方案 在使用叢集時避免痛苦的方法 兩種叢集方案 其他可以研究的叢集工具 Docker 第十二章 使用更少RAM 基本型態物件很昂貴 瞭解集合使用多少RAM Bytes vs. Unicode 在RAM中有效率地儲存許多文字 為更多文字建模:使用scikit-learn的FeatureHasher DictVectorizer與FeatureHasher簡介 SciPy的稀疏矩陣 關於使用更少RAM的小提示 機率式資料結構 第十三章 來自現場的教訓 開發高效能機器學習演算法 新聞領域中的高效能運算 來自網路再保險領域的經驗 量化金融領域裡的Python 保持彈性以實現高效能 使用Feature-engine來改進特徵工程作業線(2020) 高效能的資料科學團隊(2020) Numba(2020) 優化vs.思考(2020) 讓深度學習飛起來,與RadimRehurek.com(2014) 在Smesh的大型社群媒體分析(2014)