Skip to Main Content
高效能PYTHON程式設計
book

高效能PYTHON程式設計

by Micha Gorelick, Ian Ozsvald
August 2015
Intermediate to advanced content levelIntermediate to advanced
384 pages
7h 42m
Chinese
GoTop Information, Inc.
Content preview from 高效能PYTHON程式設計
256
|
第九章
使用 multiprocessing 共用 numpy 資料
操作大型
numpy
陣列時,你一定在想是否能夠在不同行程之間共用資料,進行讀寫存
取,而不需要副本。這是可能的,但需要費一點功夫。我們要感謝 StackOverflow 的使
用者
pv
,謝謝他為這個示範例所提供的靈感
2
不要使用這個方法重新建立 BLASMKLAccelerate ATLAS 的行為,
這些程式庫在它們的基本型別裡全都具有多執行緒的支援,而且,它們很
可能比你所建立的任何新程序都經過更完善的偵錯。它們可能需要一些組
態工作才能夠啟用多執行緒的支援,然而,在你投注時間撰寫你自己的工
具(以及花時間偵錯)之前,最好先看看這些程式庫是否能夠提供你免費
的效能提升。
在不同行程之間共用大型矩陣有幾個好處︰
只有一份副本表示不浪費 RAM
不浪費時間複製龐大的 RAM 區塊。
獲得在不同行程之間共用部分結果的可能性。
回顧第 225 頁的〈使用 numpy〉,想想我們利用
numpy
進行的 pi 估計示範,當時有一個
問題:產生隨機數字是一個循序的程序。在此,我們可以想像分叉多個共用一個大陣列
的行程,每個行程皆使用設置不同種子的隨機數字產生器,將隨機數字填入一部分陣
列,因此,相較於使用單一行程,這會更快完成大型隨機區塊的產生。
為了驗證這件事,我們私底下將後面即將出現的示範例修改成建立大型隨機矩陣
〔譯註〕
10,000×80,000 個元素),分別產生循序版本以及將矩陣劃分成 4 個部分的平行版本 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

流畅的Python

流畅的Python

Luciano Ramalho
手把手教会你linux

手把手教会你linux

桑德.范.乌格特

Publisher Resources

ISBN: 9789863477105