注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡軟件與程序設計Python高效編程:基于Rust語言

Python高效編程:基于Rust語言

Python高效編程:基于Rust語言

定 價:¥119.00

作 者: [美]麥克斯韋爾·弗立頓 著,付巖 譯
出版社: 清華大學出版社
叢編項:
標 簽: 暫缺

ISBN: 9787302630517 出版時間: 2023-03-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字數(shù):  

內(nèi)容簡介

  《Python高效編程——基于Rust語言》詳細闡述了基于Rust語言的Python高效編程,主要包括從Python的角度認識Rust、使用Rust構(gòu)建代碼、理解并發(fā)性、在Python中構(gòu)建pip模塊、為pip模塊創(chuàng)建Rust接口、在Rust中使用Python對象、在Rust中使用Python模塊、在Rust中構(gòu)建端到端Python模塊、構(gòu)建Python Flask應用程序、將Rust注入Python Flask應用程序、集成Rust的**實踐等內(nèi)容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關(guān)方案的實現(xiàn)過程。 本書適合作為高等院校計算機及相關(guān)專業(yè)的教材和教學參考書,也可作為相關(guān)開發(fā)人員的自學教材和參考手冊。

作者簡介

  麥克斯韋爾·弗立頓是一名軟件工程師,為開源的財務損失建模基金會(financial loss modeling foundation)OasisLMF工作。2011年,Maxwell取得了英國林肯大學的護理學理學士學位。在醫(yī)院急診科工作12小時的同時,Maxwell還獲得了英國開放大學的物理學學位,然后又邁向了另一個里程碑,獲得了倫敦大學醫(yī)學院的物理學和工程學研究生文憑。他曾參與過許多項目,如為德國政府提供醫(yī)療模擬軟件,并在倫敦帝國學院指導計算醫(yī)學學生。他有在金融科技領(lǐng)域工作的經(jīng)驗,并曾經(jīng)為Monolith AI公司服務過。

圖書目錄

第1篇  了解Rust
第1章  從Python的角度認識Rust 3
  1.1  技術(shù)要求 3
  1.2  了解Python和Rust之間的區(qū)別 4
  1.2.1  結(jié)合使用Python與Rust的原因 4
  1.2.2  在Rust中傳遞字符串 7
  1.2.3  在Rust中調(diào)整浮點數(shù)和整數(shù)的大小 9
  1.2.4  在Rust的向量和數(shù)組中管理數(shù)據(jù) 11
  1.2.5  用哈希映射取代字典 13
  1.2.6  Rust中的錯誤處理 16
  1.3  了解變量所有權(quán) 19
  1.3.1  復制 20
  1.3.2  移動 20
  1.3.3  不可變借用 21
  1.3.4  可變借用 23
  1.4  跟蹤作用域和生命周期 23
  1.5  構(gòu)建結(jié)構(gòu)體而不是對象 27
  1.6  使用宏而不是裝飾器進行元編程 31
  1.7  小結(jié) 34
  1.8  問題 34
  1.9  答案 35
  1.10  延伸閱讀 35
第2章  使用Rust構(gòu)建代碼 37
  2.1  技術(shù)要求 37
  2.2  用crate和Cargo代替pip管理代碼 38
  2.3  在多個文件和模塊上構(gòu)建代碼 45
  2.4  構(gòu)建模塊接口 49
  2.4.1  開發(fā)一個簡單的股票交易程序 51
  2.4.2  寫代碼時編寫文檔的好處 57
  2.5  與環(huán)境交互 58
  2.6  小結(jié) 60
  2.7  問題 61
  2.8  答案 61
  2.9  延伸閱讀 62
第3章  理解并發(fā)性 63
  3.1  技術(shù)要求 63
  3.2  并發(fā)性介紹 63
  3.2.1  線程 64
  3.2.2  進程 65
  3.3  使用線程的基本異步編程 67
  3.3.1  在Python中使用線程 68
  3.3.2  在Rust中使用線程 69
  3.4  運行多個進程 74
  3.4.1  在Python中使用多進程池 74
  3.4.2  在Rust中使用多線程池 78
  3.4.3  在Rust中使用多進程池 81
  3.5  安全地自定義線程和進程 85
  3.5.1  阿姆達爾定律 85
  3.5.2  死鎖 86
  3.5.3  競爭條件 88
  3.6  小結(jié) 88
  3.7  問題 89
  3.8  答案 89
  3.9  延伸閱讀 90
第2篇  融合Rust和Python
第4章  在Python中構(gòu)建pip模塊 95
  4.1  技術(shù)要求 95
  4.2  為Python pip模塊配置設置工具 96
  4.2.1  創(chuàng)建GitHub存儲庫 96
  4.2.2  定義基本參數(shù) 99
  4.2.3  定義自述文件 100
  4.2.4  定義基本模塊 101
  4.3  在pip模塊中打包Python代碼 102
  4.3.1  構(gòu)建斐波那契計算代碼 103
  4.3.2  創(chuàng)建命令行接口 105
  4.3.3  構(gòu)建單元測試 107
  4.4  配置持續(xù)集成 113
  4.4.1  手動部署到PyPI 113
  4.4.2  管理依賴項 115
  4.4.3  為Python設置類型檢查 116
  4.4.4  使用GitHub Actions設置和運行測試及類型檢查 117
  4.4.5  為pip包創(chuàng)建自動版本控制 121
  4.4.6  使用GitHub Actions部署到PyPI 124
  4.5  小結(jié) 126
  4.6  問題 127
  4.7  答案 128
  4.8  延伸閱讀 128
第5章  為pip模塊創(chuàng)建Rust接口 129
  5.1  技術(shù)要求 129
  5.2  使用pip打包Rust代碼 130
  5.2.1  定義gitignore和Cargo 130
  5.2.2  配置Python設置過程 132
  5.2.3  安裝Rust庫 134
  5.3  使用PyO3 crate構(gòu)建Rust接口 135
  5.3.1  構(gòu)建計算斐波那契數(shù)列的Rust代碼 136
  5.3.2  創(chuàng)建命令行工具 138
  5.3.3  創(chuàng)建適配器 140
  5.3.4  使用單例設計模式構(gòu)建適配器接口 142
  5.3.5  在Python控制臺中測試適配器接口 146
  5.4  為Rust包構(gòu)建測試 148
  5.5  比較Python、Rust和Numba的速度 151
  5.6  小結(jié) 153
  5.7  問題 154
  5.8  答案 154
  5.9  延伸閱讀 155
第6章  在Rust中使用Python對象 157
  6.1  技術(shù)要求 157
  6.2  將復雜的Python對象傳遞到Rust中 157
  6.2.1  更新setup.py文件以支持.yml加載 158
  6.2.2  定義.yml加載命令 159
  6.2.3  處理來自Python字典的數(shù)據(jù) 160
  6.2.4  從配置文件中提取數(shù)據(jù) 164
  6.2.5  將Python字典返回到Python系統(tǒng) 165
  6.3  檢查和使用自定義Python對象 167
  6.3.1  為Rust接口創(chuàng)建一個對象 167
  6.3.2  在Rust中獲取Python GIL 168
  6.3.3  向新創(chuàng)建的PyDict結(jié)構(gòu)體添加數(shù)據(jù) 170
  6.3.4  設置自定義對象的特性 172
  6.4  在Rust中構(gòu)建自定義Python對象 173
  6.4.1  定義具有所需特性的Python類 174
  6.4.2  定義類靜態(tài)方法處理輸入 174
  6.4.3  定義類構(gòu)造函數(shù) 175
  6.4.4  包裝并測試模塊 176
  6.5  小結(jié) 179
  6.6  問題 180
  6.7  答案 180
  6.8  延伸閱讀 181
第7章  在Rust中使用Python模塊 183
  7.1  技術(shù)要求 183
  7.2  認識NumPy 183
  7.2.1  在NumPy中執(zhí)行向量相加操作 184
  7.2.2  在純Python中執(zhí)行向量相加操作 185
  7.2.3  在Rust中使用NumPy執(zhí)行向量相加操作 186
  7.3  在NumPy中構(gòu)建模型 190
  7.3.1  定義模型 190
  7.3.2  構(gòu)建一個執(zhí)行模型的Python對象 192
  7.4  在Rust中使用NumPy和其他Python模塊 195
  7.5  在Rust中重建NumPy模型 198
  7.5.1  構(gòu)建get_weight_matrix和invert_get_weight_matrix函數(shù) 200
  7.5.2  構(gòu)建get_parameters、get_times和get_input_vector函數(shù) 201
  7.5.3  構(gòu)建calculate_parameters和calculate_times函數(shù) 202
  7.5.4  將計算函數(shù)添加到Python綁定 203
  7.5.5  將NumPy依賴項添加到setup.py文件 204
  7.5.6  構(gòu)建Python接口 204
  7.6  小結(jié) 205
  7.7  問題 206
  7.8  答案 206
  7.9  延伸閱讀 207
第8章  在Rust中構(gòu)建端到端Python模塊 209
  8.1  技術(shù)要求 209
  8.2  分解一個災難建模問題 209
  8.3  將端到端解決方案構(gòu)建為一個包 214
  8.3.1  構(gòu)建災難足跡合并流程 215
  8.3.2  構(gòu)建災難脆弱性合并流程 217
  8.3.3  在Rust中構(gòu)建Python接口 221
  8.3.4  在Python中構(gòu)建接口 223
  8.3.5  構(gòu)建包安裝說明 223
  8.4  使用和測試包 225
  8.4.1  使用Pandas構(gòu)建Python構(gòu)造模型 226
  8.4.2  構(gòu)建隨機事件ID生成器函數(shù) 227
  8.4.3  為Python和Rust實現(xiàn)計時 228
  8.5  小結(jié) 230
  8.6  延伸閱讀 230
第3篇  將Rust注入Web應用程序
第9章  構(gòu)建Python Flask應用程序 233
  9.1  技術(shù)要求 233
  9.2  構(gòu)建一個基本的Flask應用程序 234
  9.2.1  為應用程序構(gòu)建一個入口點 235
  9.2.2  構(gòu)建斐波那契數(shù)計算模塊 235
  9.2.3  為應用程序構(gòu)建Docker鏡像 237
  9.2.4  構(gòu)建NGINX服務 239
  9.2.5  連接并運行NGINX服務 241
  9.3  定義數(shù)據(jù)訪問層 243
  9.3.1  在docker-compose中定義PostgreSQL數(shù)據(jù)庫 244
  9.3.2  構(gòu)建配置加載系統(tǒng) 245
  9.3.3  構(gòu)建數(shù)據(jù)訪問層 247
  9.3.4  搭建應用程序數(shù)據(jù)庫遷移系統(tǒng) 249
  9.3.5  建立數(shù)據(jù)庫模型 252
  9.3.6  將數(shù)據(jù)庫訪問層應用于fib計算視圖 253
  9.4  構(gòu)建消息總線 255
  9.4.1  為Flask構(gòu)建一個Celery代理 256
  9.4.2  為Celery構(gòu)建一個斐波那契計算任務 258
  9.4.3  用Celery更新計算視圖 258
  9.4.4  在Docker中定義Celery服務 259
  9.5  小結(jié) 262
  9.6  問題 263
  9.7  答案 263
  9.8  延伸閱讀 264
第10章  將Rust注入Python Flask應用程序 265
  10.1  技術(shù)要求 265
  10.2  將Rust融合到Flask和Celery中 266
  10.2.1  定義對Rust斐波那契數(shù)計算包的依賴 266
  10.2.2  用Rust構(gòu)建計算模型 266
  10.2.3  使用Rust創(chuàng)建計算視圖 269
  10.2.4  將Rust插入Celery任務中 270
  10.3  使用Rust部署Flask和Celery 271
  10.4  使用私有GitHub存儲庫進行部署 273
  10.4.1  構(gòu)建一個協(xié)調(diào)整個過程的Bash腳本 275
  10.4.2  在Dockerfile中重新配置Rust斐波那契數(shù)列計算包的安裝 275
  10.5  將Rust與數(shù)據(jù)訪問相結(jié)合 277
  10.5.1  設置數(shù)據(jù)庫克隆包 277
  10.5.2  設置diesel環(huán)境 279
  10.5.3  自動生成和配置數(shù)據(jù)庫模型和模式 280
  10.5.4  在Rust中定義數(shù)據(jù)庫連接 282
  10.5.5  創(chuàng)建一個獲取并返回所有斐波那契記錄的Rust函數(shù) 282
  10.6  在Flask中部署Rust nightly包 285
  10.7  小結(jié) 286
  10.8  問題 286
  10.9  答案 287
  10.10  延伸閱讀 287
第11章  集成Rust的實踐 289
  11.1  技術(shù)要求 289
  11.2  通過將數(shù)據(jù)傳入和傳出Rust來保持Rust實現(xiàn)的簡單性 290
  11.2.1  構(gòu)建一個Python腳本來制定用于計算的數(shù)字的格式 290
  11.2.2  構(gòu)建一個接受數(shù)字進行計算并返回結(jié)果的Rust文件 291
  11.2.3  構(gòu)建一個接受計算出的數(shù)字并將其打印出來的Python腳本 292
  11.3  通過對象給接口一種原生的感覺 294
  11.4  使用trait而不是對象 298
  11.4.1  定義trait 300
  11.4.2  通過trait定義結(jié)構(gòu)體的行為 301
  11.4.3  通過函數(shù)傳遞trait 303
  11.4.4  存儲具有共同trait的結(jié)構(gòu)體 305
  11.4.5  在main.rs文件中運行程序 305
  11.5  通過Rayon保持數(shù)據(jù)并行的簡單性 308
  11.6  小結(jié) 310
  11.7  延伸閱讀 310
·XIV·
Python高效編程—基于Rust語言
  
·XV·
目    錄
  
  
  
  
  
  
  
  

本目錄推薦

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