內容簡介
若想充分利用所有的計算資源來構建高效的軟件係統,並行編程技術是不可或缺的一項技能。本書以Python為藍本,對並行編程領域的各項技術與知識進行瞭廣泛且深入的講解。通過對本書的學習,讀者將能夠快速且準確地掌握並行編程方方麵麵的技能,從而應用在自己的項目開發中,提升係統運行效率。本書共分為6章,從原理到實踐係統化地對並行編程技術進行瞭層層剖析,並通過大量可運行的實例演示瞭每一個知識點的具體運用方式,是提升並行編程技能的一本不可多得的好書。相信本書的齣版將會填補Python在並行領域應用的一大空白,能夠幫助想要從事並行編程與並行計算的讀者提升實踐能力,並將這一能力應用到實際的項目開發中。
作者簡介
Giancarlo Zaccone擁有超過10年的管理研發項目的經驗,涉及到科學與工業這兩個領域。他曾以研究員身份就職於國傢研究委員會(CNR),主要從事一些並行科學計算與科學可視化項目。他目前作為一名軟件工程師就職於一傢谘詢公司,主要負責開發和維護一些麵嚮太空和防禦應用的軟件係統。Giancarlo擁有那不勒斯費德裏科II大學的物理學碩士學位,並且獲得瞭羅馬大學科學計算專業的第二研究生學位。可以通過https://it.linkedin.com/in/giancarlozaccone瞭解到關於Giancarlo的更多信息。
兩位譯者均擁有10年以上的係統研發與管理經驗,關注領域主要有高並發程序設計、JVM設計與實現、函數式編程與分布式係統設計與實現。對於編寫優雅的代碼有著不懈的追求,喜歡一切簡單而美好的事物。
目錄
目錄
1 並行計算與Python起步...............................................1
介紹 ..................................1
並行計算內存架構 ..........2
內存組織 ..........................5
並行編程模型 ................10
如何設計並行程序 ........12
如何評估並行程序的性能 ....................................................14
Python簡介 ....................16
並行世界中的Python ....20
進程與綫程介紹 ............21
開始在Python中使用進程 ....................................................21
開始在Python中使用綫程 ....................................................23
2 基於綫程的並行. .27
介紹 ................................27
使用Python的綫程模塊 28
如何定義綫程 ................28
如何確定當前的綫程 ....30
如何在子類中使用綫程 32
使用Lock與RLock實現綫程同步 ........................................34
使用RLock實現綫程同步 .....................................................38
使用信號量實現綫程同步 ....................................................40
使用條件實現綫程同步 44
使用事件實現綫程同步 47
使用with語句 ................51
使用隊列實現綫程通信 53
評估多綫程應用的性能 57
3 基於進程的並行63
介紹 ................................64
如何生成進程 ................64
如何對進程命名 ............66
如何在後颱運行進程 ....68
如何殺死進程 ................69
如何在子類中使用進程 70
如何在進程間交換對象 72
如何同步進程 ................78
如何管理進程間狀態 ....81
如何使用進程池 ............82
使用mpi4py模塊 ...........84
點對點通信 ....................87
避免死鎖問題 ................91
使用廣播實現聚閤通信 94
使用scatter實現聚閤通信 .....................................................96
使用gather實現聚閤通信 ......................................................99
使用Alltoall實現聚閤通信 .................................................101
匯聚操作 ......................103
如何優化通信 ..............105
4 異步編程. ........111
介紹 .............................. 111
使用 Python的 concurrent.futures 模塊 .............................. 112
使用Asyncio實現事件循環管理 ........................................ 116
使用Asyncio處理協程 120
使用Asyncio管理任務 125
使用Asyncio和Futures 128
5 分布式Python133
介紹 ..............................133
使用 Celery 分發任務 .134
如何使用 Celery 創建任務 .................................................136
使用 SCOOP進行科學計算 ...............................................139
使用 SCOOP處理映射函數 ...............................................143
使用 Pyro4 遠程調用方法 ..................................................147
使用 Pyro4 鏈接對象 ..150
使用 Pyro4 開發一個客戶端-服務器應用.........................156
使用 PyCSP實現順序進程通信 ........................................162
在Disco中使用 MapReduce ................................................167
使用 RPyC 調用遠程過程 ..................................................172
6 使用Python進行GPU編程. ......................................175
介紹 ..............................175
使用 PyCUDA模塊 ....177
如何構建一個 PyCUDA應用 ............................................181
通過矩陣操作理解 PyCUDA內存模型 ............................186
使用 GPUArray 調用內核 ..................................................192
使用 PyCUDA對逐元素錶達式求值 ................................194
使用 PyCUDA進行 MapReduce 操作 ...............................198
使用 NumbaPro 進行GPU編程 ..........................................201
通過 NumbaPro 使用 GPU 加速的庫 ................................206
使用 PyOpenCL模塊 .. 211
如何構建一個 PyOpenCL應用 ..........................................214
使用PyOpenCL對逐元素錶達式求值 ................................218
使用 PyOpenCL測試 GPU 應用 ........................................221
Python 並行編程手冊 下載 mobi epub pdf txt 電子書 格式