Python 高效編程 — 基於 Rust語言 Speed Up Your Python with Rust: Optimize Python performance by creating Python pip modules in Rust with PyO3
[美]麥克斯韋爾·弗立頓 著 付巖 譯
- 出版商: 清華大學
- 出版日期: 2023-03-01
- 定價: $714
- 售價: 8.5 折 $607
- 語言: 簡體中文
- 頁數: 310
- ISBN: 7302630518
- ISBN-13: 9787302630517
-
相關分類:
Python、Rust 語言
- 此書翻譯自: Speed Up Your Python with Rust: Optimize Python performance by creating Python pip modules in Rust with PyO3
立即出貨 (庫存 < 4)
買這商品的人也買了...
-
Binary Hacks -- 駭客秘傳技巧一百招$580$458 -
$607Rust 編程之道 -
Python 接班人出世:最新科學專用語言 Julia 入門實戰$690$545 -
$477Rust 權威指南 (The Rust Programming Language (Covers Rust 2018)) -
$2,138Data Science at the Command Line: Obtain, Scrub, Explore, and Model Data with Unix Power Tools (Paperback) -
Modbus 軟件開發實戰指南, 2/e$468$445 -
用 Go語言自製編譯器$599$569 -
用 Go語言自製解釋器$599$569 -
$708深入理解 Linux 網絡: 修煉底層內功,掌握高性能原理 -
$564Rust 系統編程 -
使用 GitOps 實現 Kubernetes 的持續部署:模式、流程及工具$714$678 -
$556PyTorch 高級機器學習實戰 -
編寫 Rust 指令列程式|透過小巧完整的程式學習 Rust CLI (Command-Line Rust: A Project-Based Primer for Writing Rust CLIs)$680$537 -
演算法邏輯力:工程師必備的演算法解題、設計、加速技巧 (Algorithmic Thinking: A Problem-Based Introduction)$720$475 -
精通嵌入式 Linux 程式設計, 3/e (上)$750$585 -
精通嵌入式 Linux 程式設計, 3/e (下)$450$351 -
高效率 Linux 命令列學習手冊 (Efficient Linux at the Command Line: Boost Your Command-Line Skills)$580$458 -
Python 應用數值方法 — 解決工程和科學問題$948$901 -
從異世界歸來發現只剩自己不會 Kubernetes:初心者進入雲端世界的實戰攻略!(iThome鐵人賽系列書)【平裝】$650$507 -
$509Rust 遊戲開發實戰 -
超圖解 ESP32 應用實作$820$648 -
C 的快速 + Python 的易學 - Go語言全功能開發養成書$880$695 -
遞迴演算法大師親授面試心法:Python 與 JavaScript 解題全攻略 (The Recursive Book of Recursion)$680$448 -
Linux 核心除錯實務 (Linux Kernel Debugging: Leverage proven tools and advanced techniques to effectively debug Linux kernels and kernel modules)$800$632 -
Rust 最佳入門與實戰$1,000$790
中文年末書展|繁簡參展書2書75折 詳見活動內容 »
-
75折
為你寫的 Vue Components:從原子到系統,一步步用設計思維打造面面俱到的元件實戰力 (iThome 鐵人賽系列書)$780$585 -
75折
BDD in Action, 2/e (中文版)$960$720 -
75折
看不見的戰場:社群、AI 與企業資安危機$750$563 -
79折
AI 精準提問 × 高效應用:DeepSeek、ChatGPT、Claude、Gemini、Copilot 一本搞定$390$308 -
7折
超實用!Word.Excel.PowerPoint 辦公室 Office 365 省時高手必備 50招, 4/e (暢銷回饋版)$420$294 -
75折
裂縫碎光:資安數位生存戰$550$412 -
85折
日本當代最強插畫 2025 : 150位當代最強畫師豪華作品集$640$544 -
79折
Google BI 解決方案:Looker Studio × AI 數據驅動行銷實作,完美整合 Google Analytics 4、Google Ads、ChatGPT、Gemini$630$498 -
79折
超有料 Plus!職場第一實用的 AI 工作術 - 用對 AI 工具、自動化 Agent, 讓生產力全面進化!$599$473 -
75折
從零開始學 Visual C# 2022 程式設計, 4/e (暢銷回饋版)$690$518 -
75折
Windows 11 制霸攻略:圖解 AI 與 Copilot 應用,輕鬆搞懂新手必學的 Windows 技巧$640$480 -
75折
精準駕馭 Word!論文寫作絕非難事 (好評回饋版)$480$360 -
Sam Yang 的插畫藝術:用 Procreate / PS 畫出最強男友視角 x 女孩美好日常$699$629 -
79折
AI 加持!Google Sheets 超級工作流$599$473 -
78折
想要 SSR? 快使用 Nuxt 吧!:Nuxt 讓 Vue.js 更好處理 SEO 搜尋引擎最佳化(iThome鐵人賽系列書)$780$608 -
75折
超實用!業務.總管.人資的辦公室 WORD 365 省時高手必備 50招 (第二版)$500$375 -
7折
Node-RED + YOLO + ESP32-CAM:AIoT 智慧物聯網與邊緣 AI 專題實戰$680$476 -
79折
「生成式⇄AI」:52 個零程式互動體驗,打造新世代人工智慧素養$599$473 -
7折
Windows APT Warfare:惡意程式前線戰術指南, 3/e$720$504 -
75折
我輩程式人:回顧從 Ada 到 AI 這條程式路,程式人如何改變世界的歷史與未來展望 (We, Programmers: A Chronicle of Coders from Ada to AI)$850$637 -
75折
不用自己寫!用 GitHub Copilot 搞定 LLM 應用開發$600$450 -
79折
Tensorflow 接班王者:Google JAX 深度學習又快又強大 (好評回饋版)$780$616 -
79折
GPT4 會你也會 - 共融機器人的多模態互動式情感分析 (好評回饋版)$700$553 -
79折
技術士技能檢定 電腦軟體應用丙級術科解題教本|Office 2021$460$363 -
75折
Notion 與 Notion AI 全能實戰手冊:生活、學習與職場的智慧策略 (暢銷回饋版)$560$420
相關主題
商品描述
《Python高效編程——基於Rust語言》詳細闡述了基於Rust語言的Python高效編程,主要包括從Python的角度認識Rust、使用Rust構建代碼、理解並發性、在Python中構建pip模塊、為pip模塊創建Rust接口、在Rust中使用Python對象、在Rust中使用Python模塊、在Rust中構建端到端Python模塊、構建Python Flask應用程序、將Rust註入Python Flask應用程序、集成Rust的**實踐等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校電腦及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。
目錄大綱
第1篇 瞭解Rust
第1章 從Python的角度認識Rust 3
1.1 技術要求 3
1.2 瞭解Python和Rust之間的區別 4
1.2.1 結合使用Python與Rust的原因 4
1.2.2 在Rust中傳遞字符串 7
1.2.3 在Rust中調整浮點數和整數的大小 9
1.2.4 在Rust的向量和數組中管理數據 11
1.2.5 用哈希映射取代字典 13
1.2.6 Rust中的錯誤處理 16
1.3 瞭解變量所有權 19
1.3.1 復制 20
1.3.2 移動 20
1.3.3 不可變借用 21
1.3.4 可變借用 23
1.4 跟蹤作用域和生命周期 23
1.5 構建結構體而不是對象 27
1.6 使用宏而不是裝飾器進行元編程 31
1.7 小結 34
1.8 問題 34
1.9 答案 35
1.10 延伸閱讀 35
第2章 使用Rust構建代碼 37
2.1 技術要求 37
2.2 用crate和Cargo代替pip管理代碼 38
2.3 在多個文件和模塊上構建代碼 45
2.4 構建模塊接口 49
2.4.1 開發一個簡單的股票交易程序 51
2.4.2 寫代碼時編寫文檔的好處 57
2.5 與環境交互 58
2.6 小結 60
2.7 問題 61
2.8 答案 61
2.9 延伸閱讀 62
第3章 理解並發性 63
3.1 技術要求 63
3.2 並發性介紹 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 小結 88
3.7 問題 89
3.8 答案 89
3.9 延伸閱讀 90
第2篇 融合Rust和Python
第4章 在Python中構建pip模塊 95
4.1 技術要求 95
4.2 為Python pip模塊配置設置工具 96
4.2.1 創建GitHub存儲庫 96
4.2.2 定義基本參數 99
4.2.3 定義自述文件 100
4.2.4 定義基本模塊 101
4.3 在pip模塊中打包Python代碼 102
4.3.1 構建斐波那契計算代碼 103
4.3.2 創建命令行接口 105
4.3.3 構建單元測試 107
4.4 配置持續集成 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包創建自動版本控制 121
4.4.6 使用GitHub Actions部署到PyPI 124
4.5 小結 126
4.6 問題 127
4.7 答案 128
4.8 延伸閱讀 128
第5章 為pip模塊創建Rust接口 129
5.1 技術要求 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構建Rust接口 135
5.3.1 構建計算斐波那契數列的Rust代碼 136
5.3.2 創建命令行工具 138
5.3.3 創建適配器 140
5.3.4 使用單例設計模式構建適配器接口 142
5.3.5 在Python控制臺中測試適配器接口 146
5.4 為Rust包構建測試 148
5.5 比較Python、Rust和Numba的速度 151
5.6 小結 153
5.7 問題 154
5.8 答案 154
5.9 延伸閱讀 155
第6章 在Rust中使用Python對象 157
6.1 技術要求 157
6.2 將復雜的Python對象傳遞到Rust中 157
6.2.1 更新setup.py文件以支持.yml加載 158
6.2.2 定義.yml加載命令 159
6.2.3 處理來自Python字典的數據 160
6.2.4 從配置文件中提取數據 164
6.2.5 將Python字典返回到Python系統 165
6.3 檢查和使用自定義Python對象 167
6.3.1 為Rust接口創建一個對象 167
6.3.2 在Rust中獲取Python GIL 168
6.3.3 向新創建的PyDict結構體添加數據 170
6.3.4 設置自定義對象的特性 172
6.4 在Rust中構建自定義Python對象 173
6.4.1 定義具有所需特性的Python類 174
6.4.2 定義類靜態方法處理輸入 174
6.4.3 定義類構造函數 175
6.4.4 包裝並測試模塊 176
6.5 小結 179
6.6 問題 180
6.7 答案 180
6.8 延伸閱讀 181
第7章 在Rust中使用Python模塊 183
7.1 技術要求 183
7.2 認識NumPy 183
7.2.1 在NumPy中執行向量相加操作 184
7.2.2 在純Python中執行向量相加操作 185
7.2.3 在Rust中使用NumPy執行向量相加操作 186
7.3 在NumPy中構建模型 190
7.3.1 定義模型 190
7.3.2 構建一個執行模型的Python對象 192
7.4 在Rust中使用NumPy和其他Python模塊 195
7.5 在Rust中重建NumPy模型 198
7.5.1 構建get_weight_matrix和invert_get_weight_matrix函數 200
7.5.2 構建get_parameters、get_times和get_input_vector函數 201
7.5.3 構建calculate_parameters和calculate_times函數 202
7.5.4 將計算函數添加到Python綁定 203
7.5.5 將NumPy依賴項添加到setup.py文件 204
7.5.6 構建Python接口 204
7.6 小結 205
7.7 問題 206
7.8 答案 206
7.9 延伸閱讀 207
第8章 在Rust中構建端到端Python模塊 209
8.1 技術要求 209
8.2 分解一個災難建模問題 209
8.3 將端到端解決方案構建為一個包 214
8.3.1 構建災難足跡合並流程 215
8.3.2 構建災難脆弱性合並流程 217
8.3.3 在Rust中構建Python接口 221
8.3.4 在Python中構建接口 223
8.3.5 構建包安裝說明 223
8.4 使用和測試包 225
8.4.1 使用Pandas構建Python構造模型 226
8.4.2 構建隨機事件ID生成器函數 227
8.4.3 為Python和Rust實現計時 228
8.5 小結 230
8.6 延伸閱讀 230
第3篇 將Rust註入Web應用程序
第9章 構建Python Flask應用程序 233
9.1 技術要求 233
9.2 構建一個基本的Flask應用程序 234
9.2.1 為應用程序構建一個入口點 235
9.2.2 構建斐波那契數計算模塊 235
9.2.3 為應用程序構建Docker鏡像 237
9.2.4 構建NGINX服務 239
9.2.5 連接並運行NGINX服務 241
9.3 定義數據訪問層 243
9.3.1 在docker-compose中定義PostgreSQL數據庫 244
9.3.2 構建配置加載系統 245
9.3.3 構建數據訪問層 247
9.3.4 搭建應用程序數據庫遷移系統 249
9.3.5 建立數據庫模型 252
9.3.6 將數據庫訪問層應用於fib計算視圖 253
9.4 構建消息總線 255
9.4.1 為Flask構建一個Celery代理 256
9.4.2 為Celery構建一個斐波那契計算任務 258
9.4.3 用Celery更新計算視圖 258
9.4.4 在Docker中定義Celery服務 259
9.5 小結 262
9.6 問題 263
9.7 答案 263
9.8 延伸閱讀 264
第10章 將Rust註入Python Flask應用程序 265
10.1 技術要求 265
10.2 將Rust融合到Flask和Celery中 266
10.2.1 定義對Rust斐波那契數計算包的依賴 266
10.2.2 用Rust構建計算模型 266
10.2.3 使用Rust創建計算視圖 269
10.2.4 將Rust插入Celery任務中 270
10.3 使用Rust部署Flask和Celery 271
10.4 使用私有GitHub存儲庫進行部署 273
10.4.1 構建一個協調整個過程的Bash腳本 275
10.4.2 在Dockerfile中重新配置Rust斐波那契數列計算包的安裝 275
10.5 將Rust與數據訪問相結合 277
10.5.1 設置數據庫克隆包 277
10.5.2 設置diesel環境 279
10.5.3 自動生成和配置數據庫模型和模式 280
10.5.4 在Rust中定義數據庫連接 282
10.5.5 創建一個獲取並返回所有斐波那契記錄的Rust函數 282
10.6 在Flask中部署Rust nightly包 285
10.7 小結 286
10.8 問題 286
10.9 答案 287
10.10 延伸閱讀 287
第11章 集成Rust的最佳實踐 289
11.1 技術要求 289
11.2 通過將數據傳入和傳出Rust來保持Rust實現的簡單性 290
11.2.1 構建一個Python腳本來制定用於計算的數字的格式 290
11.2.2 構建一個接受數字進行計算並返回結果的Rust文件 291
11.2.3 構建一個接受計算出的數字並將其打印出來的Python腳本 292
11.3 通過對象給接口一種原生的感覺 294
11.4 使用trait而不是對象 298
11.4.1 定義trait 300
11.4.2 通過trait定義結構體的行為 301
11.4.3 通過函數傳遞trait 303
11.4.4 存儲具有共同trait的結構體 305
11.4.5 在main.rs文件中運行程序 305
11.5 通過Rayon保持數據並行的簡單性 308
11.6 小結 310
11.7 延伸閱讀 310
·XIV·
Python高效編程—基於Rust語言
·XV·
目 錄



