當咱們在受限於網絡或IO的函數中使用gevent,這些函數會被協做式的調度,gevent的真在能力會獲得發揮。
網絡
Gevent處理了全部的細節,來保證你的網絡會在可能的時候,隱式交出greenlet上下文的執行權。這樣的一種用法是如何的強大,怎麼強調都不爲過。舉例說明函數
下面例子中的select()函數一般是一個在各類文件描述符上輪詢的阻塞調用。spa
import timeevent
import geventimport
from gevent import selectlambda
start = time.time()select
tic = lambda:'at %1.1f seconds'%(time.time() - start)im
def gr1():gevent
print 'Started polling:%s'%tic()文件
select.select([],[],[],2)
print 'Ended polling:%s'%tic()
def gr2():
print 'Started polling:%s'%tic()
select.select([],[],[],2)
print 'Ended polling:%s'%tic()
def gr3():
print 'Hey lets do some stuff while the greedlets poll,%s'%tic()
gevent.joinall([
gevent.spawn(gr1),
gevent.spawn(gr2),
gevent.spawn(gr3),
])