正文

 

  在前文已经介绍过了gevent的调度流程,本文介绍gevent一些重要的模块,包括Timeout,Event\AsynResult, Semphore, socket patch,这些模块都涉及当前协程与hub的切换。本文分析的gevent版本为1.2

Timeout

回到顶部

  这个类在gevent.timeout模块,其作用是超时后在当前协程抛出异常,这样执行流程也强制回到了当前协程。看一个简单的例子:

iOS培训,Swift培训,苹果开发培训,移动开发培训

 1 SLEEP = 6 2 TIMEOUT = 5 3  4 timeout = Timeout(TIMEOUT) 5 timeout.start() 6  7 def wait(): 8     gevent.sleep(SLEEP) 9     print('log in wait')10 11 begin = time.time()12 try:13     gevent.spawn(wait).join()14 except Timeout:15     print('after %s catch Timeout Exception' % (time.time() - begin))16 finally:    
17     timeout.cancel()

iOS培训,Swift培训,苹果开发培训,移动开发培训

网友评论