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程式設計
192
|
第八章
gevent
最簡單的非同步程式庫之一為
gevent
,它遵循讓非同步函式回傳 future 的範式,這表
示,程式碼裡的大多數邏輯能夠維持不變。此外,
gevent
以猴子補丁
〔譯註〕
的方式將標
I/O 函式變成是非同步的,因此,大多數時間,你能夠單純地使用標準 I/O 套件,但
自動得益於非同步的行為。
gevent
提供二種機制啟用非同步編程—如前所述,它使用非同步 I/O 函式修補(patch
標準程式庫。另外,它也具有能夠被用在並發執行的
Greenlet
件,
greenlet
是一
coroutine,能夠被視為執行緒(關於執行緒的討論,請參閱第 9 章);不過,所有
greenlet 都執行在相同的實體執行緒上,也就是說,代替使用多個 CPU 執行所有的
greenlet
gevent
的排程器於 I/O 等待期間,利用事件迴圈在它們之間做切換。在極大程
度上,
gevent
試著透過
wait
函式盡量透明地處理事件迴圈。
wait
函式會啟動事件迴圈,
並且在需要時執行它,直到所有的 greenlet 完成。因為這樣,你的大多數
gevent
程式
碼會循序執行;然後,在某個點,你會建立許多 greenlet 處理一些並行的任務,並且使
wait
函式啟動事件迴圈。在
wait
函式執行時,你已經排進佇列的所有並行任務都會
執行,直到完成(或者碰到某種停止條件),接著,你的程式碼會再次回到循序執行的
狀態。
future 藉由
gevent.spawn
被建立,
gevent.spawn
接受函式及函式的引數 ...
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