注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)數(shù)據(jù)庫極速Python:高性能編碼、計(jì)算與數(shù)據(jù)分析

極速Python:高性能編碼、計(jì)算與數(shù)據(jù)分析

極速Python:高性能編碼、計(jì)算與數(shù)據(jù)分析

定 價(jià):¥79.80

作 者: [美] 蒂亞戈·羅德里格斯·安道(Tiago Rodrigues Antao)著 沈沖 譯
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787302656296 出版時(shí)間: 2024-03-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  《極速Python:高性能編碼、計(jì)算與數(shù)據(jù)分析》系統(tǒng)性地介紹了Python高性能編程的各種工具和方法,并重點(diǎn)講解了Python在大數(shù)據(jù)中的應(yīng)用。書中配有清晰的示例和詳實(shí)的分析,可幫助讀者熟練掌握NumPy和Pandas,實(shí)現(xiàn)高性能的數(shù)據(jù)存儲和I/O。本書高屋建瓴、不留遺漏,讀者學(xué)習(xí)本書后,能從代碼到架構(gòu)對系統(tǒng)進(jìn)行整體優(yōu)化。 主要內(nèi)容 ● 使用Cython重構(gòu)關(guān)鍵代碼。 ● 設(shè)計(jì)健壯的數(shù)據(jù)結(jié)構(gòu)。 ● 精簡不同架構(gòu)的代碼。 ● 實(shí)現(xiàn)Python GPU計(jì)算。

作者簡介

  Tiago Rodrigues Antão擁有信息學(xué)工程學(xué)士學(xué)位和生物信息學(xué)博士學(xué)位。他目前從事生物技術(shù)工作,使用Python生態(tài)來處理科學(xué)計(jì)算和數(shù)據(jù)工程任務(wù)。大多數(shù)時(shí)候,他也使用底層編程語言(如C和Rust)對算法的關(guān)鍵部分進(jìn)行優(yōu)化。目前,他在基于Amazon AWS的云計(jì)算設(shè)備上進(jìn)行開發(fā),但使用的基本是本地計(jì)算集群。除了業(yè)內(nèi)經(jīng)歷,他在科學(xué)計(jì)算方面有兩段學(xué)術(shù)經(jīng)歷,包括在劍橋大學(xué)和牛津大學(xué)從事數(shù)據(jù)分析博士后研究工作。作為蒙大拿大學(xué)的研究員,他從零開始創(chuàng)建了用于分析生物數(shù)據(jù)的整套科學(xué)計(jì)算方法。Tiago是重要生物信息軟件包Biopython(用Python編寫)的共同作者之一,也是Bioinformatics with Python Cookbook(Packt出版社,2022)一書的作者,該書已出版了第3版。他還在生物信息學(xué)領(lǐng)域發(fā)表了多篇重要的科研論文。

圖書目錄

 
第Ⅰ部分  基礎(chǔ)知識
第1章  對高效數(shù)據(jù)處理的迫切需求 3
1.1  數(shù)據(jù)泛濫的嚴(yán)重性 4
1.2  現(xiàn)代計(jì)算架構(gòu)和高性能計(jì)算 6
1.2.1  計(jì)算機(jī)內(nèi)部的變化 7
1.2.2  網(wǎng)絡(luò)的變化 8
1.2.3  云計(jì)算 9
1.3  Python的局限性 10
1.4  解決方案小結(jié) 11
1.5  本章小結(jié) 13
第2章  發(fā)揮內(nèi)置功能的最高性能 15
2.1  分析同時(shí)具有IO和計(jì)算
任務(wù)的應(yīng)用程序 16
2.1.1  下載數(shù)據(jù)并計(jì)算最低溫度 16
2.1.2  Python的內(nèi)置分析模塊 18
2.1.3  使用本地緩存 19
2.2  對代碼進(jìn)行分析以檢測性能瓶頸 20
2.2.1  可視化分析信息 21
2.2.2  行分析 22
2.2.3  代碼分析小結(jié) 23
2.3  優(yōu)化基本數(shù)據(jù)結(jié)構(gòu):列表、集合、字典 24
2.3.1  列表搜索的性能 25
2.3.2  使用集合進(jìn)行搜索 25
2.3.3  Python中的列表、集合和字典的復(fù)雜性 26
2.4  節(jié)約內(nèi)存 27
2.4.1  Python內(nèi)存估算 28
2.4.2  其他表示方法的內(nèi)存占用 30
2.4.3  使用數(shù)組進(jìn)行緊湊表示 32
2.4.4  串聯(lián)知識點(diǎn):估算Python對象的內(nèi)存占用 33
2.4.5  Python對象內(nèi)存占用小結(jié) 34
2.5  在大數(shù)據(jù)管道中使用惰性編程和生成器 34
2.6  本章小結(jié) 36
第3章  并發(fā)、并行和異步 37
3.1  編寫異步服務(wù)器框架 39
3.1.1  實(shí)現(xiàn)與客戶通信的框架 41
3.1.2  協(xié)程 42
3.1.3  使用簡單的同步客戶端發(fā)送復(fù)雜數(shù)據(jù) 43
3.1.4  實(shí)現(xiàn)進(jìn)程間通信的其他方法 44
3.1.5  異步編程小結(jié) 45
3.2  實(shí)現(xiàn)基本的MapReduce引擎 45
3.2.1  理解MapReduce框架 45
3.2.2  開發(fā)簡單的測試場景 46
3.2.3  第一次實(shí)現(xiàn)MapReduce框架 47
3.3  實(shí)現(xiàn)MapReduce并發(fā)引擎 47
3.3.1  使用concurrent.futures實(shí)現(xiàn)線程服務(wù)器 47
3.3.2  使用futures異步執(zhí)行 49
3.3.3  GIL和多線程 51
3.4  使用多進(jìn)程實(shí)現(xiàn)MapReduce 52
3.4.1  基于concurrent.futures的解決方案 52
3.4.2  基于多進(jìn)程模塊的解決方案 53
3.4.3  監(jiān)控多進(jìn)程方法的進(jìn)度 54
3.4.4  分塊傳輸數(shù)據(jù) 56
3.5  知識點(diǎn)串聯(lián):異步多線程和多進(jìn)程MapReduce 服務(wù)器 59
3.5.1  創(chuàng)建完整的高性能解決方案 59
3.5.2  創(chuàng)建強(qiáng)大且穩(wěn)定的服務(wù)器 62
3.6  本章小結(jié) 63
第4章  高性能NumPy 65
4.1  理解NumPy的性能 66
4.1.1  數(shù)組的副本與視圖 66
4.1.2  NumPy的視圖機(jī)制 71
4.1.3  利用視圖提高效率 75
4.2  數(shù)組編程 77
4.2.1  小結(jié) 78
4.2.2  NumPy中的廣播 78
4.2.3  應(yīng)用數(shù)組編程 80
4.2.4  矢量化計(jì)算 82
4.3  改進(jìn)NumPy內(nèi)部架構(gòu) 85
4.3.1  NumPy的依賴關(guān)系 85
4.3.2  在Python發(fā)行版中調(diào)整NumPy 87
4.3.3  NumPy中的線程 88
4.4  本章小結(jié) 89
第Ⅱ部分  硬件
第5章  使用Cython重構(gòu)核心代碼 93
5.1  重構(gòu)高效代碼的方法 93
5.2  Cython快速入門 95
5.2.1  Cython實(shí)現(xiàn) 95
5.2.2  使用Cython注釋提高性能 97
5.2.3  為什么注釋可以提升性能 98
5.2.4  為函數(shù)返回值添加類型 100
5.3  分析Cython代碼 101
5.3.1  使用Python的內(nèi)置分析方法 101
5.3.2  使用line_profiler 103
5.4  用Cython內(nèi)存視圖優(yōu)化數(shù)組訪問 105
5.4.1  小結(jié) 107
5.4.2  清理Python內(nèi)部交互 107
5.5  在Cython中編寫NumPy通用函數(shù) 108
5.6  Cython高級數(shù)組訪問 110
5.6.1  繞過GIL并同時(shí)運(yùn)行多個(gè)線程 112
5.6.2  基本性能分析 116
5.6.3  使用Quadlife的視頻示例 116
5.7  Cython并行計(jì)算 117
5.8  本章小結(jié) 118
第6章  內(nèi)存層級、存儲和網(wǎng)絡(luò) 121
6.1  現(xiàn)代硬件架構(gòu)如何影響Python性能 122
6.1.1  現(xiàn)代架構(gòu)對性能的反直覺影響 122
6.1.2  CPU緩存如何影響算法效率 123
6.1.3  現(xiàn)代持久化存儲 124
6.1.4  小結(jié) 125
6.2  使用Blosc進(jìn)行高效
數(shù)據(jù)存儲 125
6.2.1  壓縮數(shù)據(jù)以節(jié)省時(shí)間 125
6.2.2  讀取速度(和內(nèi)存緩沖區(qū)) 127
6.2.3  不同壓縮算法對存儲性能的影響 128
6.2.4  探究數(shù)據(jù)表示以提高壓縮率 128
6.2.5  小結(jié) 129
6.3  使用NumExpr加速NumPy 129
6.3.1  快速表達(dá)式處理 129
6.3.2  硬件架構(gòu)的影響 130
6.3.3  不適合NumExpr的場景 131
6.4  本地網(wǎng)絡(luò)對性能的影響 131
6.4.1  REST低效的原因 132
6.4.2  基于UDP和msgpack的
客戶端 132
6.4.3  基于UDP的服務(wù)器 134
6.4.4  為客戶端添加超時(shí)機(jī)制 135
6.4.5  優(yōu)化網(wǎng)絡(luò)計(jì)算的其他建議 135
6.5  本章小結(jié) 136
第Ⅲ部分  和于現(xiàn)代數(shù)據(jù)處理的應(yīng)用和庫
第7章  高性能pandas和Apache Arrow 139
7.1  優(yōu)化數(shù)據(jù)加載的內(nèi)存和時(shí)間 140
7.1.1  壓縮數(shù)據(jù)與未壓縮數(shù)據(jù) 140
7.1.2  推斷列的類型 141
7.1.3  數(shù)據(jù)類型精度的影響 143
7.1.4  重新編碼和壓縮數(shù)據(jù) 144
7.2  高效數(shù)據(jù)分析方法 147
7.2.1  使用索引加速訪問 147
7.2.2  行的迭代方法 148
7.3  基于NumPy、Cython和NumExpr的pandas 150
7.3.1  顯式使用NumPy 151
7.3.2  基于NumExpr的pandas 151
7.3.3  Cython和pandas 153
7.4  使用Arrow將數(shù)據(jù)讀入pandas 154
7.4.1  pandas和Apache Arrow的關(guān)系 155
7.4.2  讀取CSV文件 156
7.4.3  使用Arrow進(jìn)行分析 158
7.5  使用Arrow互操作將任務(wù)委托給更高效的語言和系統(tǒng) 158
7.5.1  Arrow語言互操作架構(gòu)的意義 159
7.5.2  使用Arrow的Plasma服務(wù)器對數(shù)據(jù)進(jìn)行零拷貝操作 160
7.6  本章小結(jié) 163
第8章  大數(shù)據(jù)存儲 165
8.1  訪問文件的統(tǒng)一接口:fsspec 165
8.1.1  使用fsspec搜索GitHub倉庫中的文件 166
8.1.2  使用fsspec檢查zip文件 167
8.1.3  使用fsspec訪問文件 168
8.1.4  使用URL鏈遍歷不同的文件系統(tǒng) 168
8.1.5  替換文件系統(tǒng)后端 169
8.1.6  使用PyArrow接口 169
8.2  Parquet:高效的列型數(shù)據(jù)存儲格式 170
8.2.1  檢查Parquet元數(shù)據(jù) 170
8.2.2  使用Parquet進(jìn)行列編碼 171
8.2.3  對數(shù)據(jù)集進(jìn)行分區(qū) 173
8.3  使用傳統(tǒng)方法處理大于內(nèi)存的數(shù)據(jù)集 175
8.3.1  使用NumPy對文件進(jìn)行內(nèi)存映射 175
8.3.2  數(shù)據(jù)幀的分塊讀取和寫入 177
8.4  使用Zarr進(jìn)行大型數(shù)組持久化 178
8.4.1  Zarr的內(nèi)部架構(gòu) 179
8.4.2  Zarr中數(shù)組的存儲 181
8.4.3  創(chuàng)建新數(shù)組 183
8.4.4  Zarr數(shù)組的并行讀寫 184
8.5  本章小結(jié) 186
第Ⅳ部分  高級主題
第9章  使用GPU進(jìn)行數(shù)據(jù)分析 189
9.1  理解GPU算力 190
9.1.1  GPU的優(yōu)勢 190
9.1.2  CPU和GPU的關(guān)系 192
9.1.3  GPU的內(nèi)部架構(gòu) 193
9.1.4  軟件架構(gòu) 194
9.2  使用Numba生成GPU代碼 194
9.2.1  安裝Python的GPU軟件 194
9.2.2  使用Numba進(jìn)行GPU編程的基礎(chǔ)知識 195
9.2.3  使用GPU重構(gòu)Mandelbrot示例 198
9.2.4  使用NumPy編寫Mandelbrot代碼 200
9.3  GPU代碼性能分析:CuPy程序案例 201
9.3.1  基于GPU的數(shù)據(jù)分析庫 202
9.3.2  使用CuPy:NumPy基于GPU 202
9.3.3  CuPy基本操作 202
9.3.4  使用Numba編寫Mandelbrot生成器 203
9.3.5  使用CUDA C實(shí)現(xiàn)Mandelbrot生成器 205
9.3.6  GPU代碼分析工具 206
9.4  本章小結(jié) 209
第10章  使用Dask分析大數(shù)據(jù) 211
10.1  Dask的執(zhí)行模型 212
10.1.1  用于比較的pandas基線 212
10.1.2  實(shí)現(xiàn)基于Dask的數(shù)據(jù)幀解決方案 213
10.2  Dask操作的計(jì)算開銷 215
10.2.1  處理數(shù)據(jù)分區(qū) 216
10.2.2  中間計(jì)算持久化 217
10.2.3  分布式數(shù)據(jù)幀上的算法實(shí)現(xiàn) 218
10.2.4  重新對數(shù)據(jù)進(jìn)行分區(qū) 220
10.2.5  分布式數(shù)據(jù)幀持久化 223
10.3  使用Dask的分布式調(diào)度器 224
10.3.1  dask.distributed架構(gòu) 225
10.3.2  使用dask.distributed運(yùn)行代碼 228
10.3.3  處理大于內(nèi)存的數(shù)據(jù)集 232
10.4  本章小結(jié) 234
附錄A  搭建環(huán)境 235
附錄B  使用Numba生成高效的底層代碼 239
 
 

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號