gevent的强大所在

当我们在受限于网络或IO的函数中使用gevent,这些函数会被协作式的调度,gevent的真在能力会得到发挥。

Gevent处理了所有的细节,来保证你的网络会在可能的时候,隐式交出greenlet上下文的执行权。这样的一种用法是如何的强大,怎么强调都不为过。举例说明

下面例子中的select()函数通常是一个在各种文件描述符上轮询的阻塞调用。

import time

import gevent

from gevent import select

start = time.time()

tic = lambda:'at %1.1f seconds'%(time.time() - start)

def gr1():

    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),

])

你可能感兴趣的:(gevent的强大所在)