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程式設計
234
|
第九章
如果你正在從事長時間執行的科學問題,在當中,每個任務都要耗費很多
秒鐘的時間(甚至更長),那麼,你可能會想要檢視一下 Gael Varoquaux
joblib
http://pythonhosted.org/joblib/
)。這項工具支援輕量級的管道機
制(pipelining);奠基於
multiprocessing
之上,並且提供比較簡單的平
行化介面、結果快取,以及偵錯功能。
工作佇列
multiprocessing.Queue
物件提供我們非永續性的佇列(nonpersistent queue),那能夠在
行程之間傳送任何可序列化的(pickleablePython 物件。佇列附帶額外成本,因為每
個物件都必須經過序列化(pickle)才能夠被傳送,然後在消費者當中被反序列化(伴
隨著一些鎖定操作)。在下列範例裡,我們會看到這項成本不可被忽略。然而,如果你
的工作者正在處理較大型的任務,那麼,額外的溝通成本或許可以被接受。
使用這些佇列相當容易。在這個範例裡,我們會檢查一序列候選數字,並且將找到的質
數放回
definite_primes_queue
。我們會使用 124 8 個行程來執行這項工作,並且
確認後面二個所花費的時間會比執行單一行程(檢查相同的數字範圍)都還要長。
Queue
讓我們能夠使用原生的 Python 物件執行大量的行程間通訊,如果你正四處傳遞具
有許多狀態的物件,這會是很有用的。不過,因為
Queue
缺乏永續性(persistence),
可能不想要將它們運用於必須在發生失敗時維持強健性( ...
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