`
chenyinghg
  • 浏览: 33724 次
  • 性别: Icon_minigender_2
  • 来自: 惠州
社区版块
存档分类
最新评论

tornado.concurrent.Future

 
阅读更多

tornado小巧精悍,功能有很强,代码也很难看懂啊。好难, 哈哈哈

Future

Future是一个对象。用来保存异步操作的结果, 在异步应用中Futures被用来等待一个线程或进程池的结果 Tornado中主要是在IOLoop.add_future或在gen.coroutine中yield。

def __init__(self):
    self._done = False      标志是否结束
    self._result = None      保存结果
    self._exc_info = None

    self._log_traceback = False   # Used for Python >= 3.4
    self._tb_logger = None        # Used for Python <= 3.3

    self._callbacks = []        结束后回调的函数

 Future并不支持cancle, 所以,cancelled和cancell都是直接返回了False

running():   是否还在执行   return not self._done

done():   是否结束    return self._done

result(timeout=None): 如果操作正常结束,直接返回self._result, 否则将抛出异常, timeout参数没有使用

exception(timeout=None):  如果异步操作抛出异常,该函数直接返回一个Exception对象,否则如果没有结束的话,将抛出异常,若结束则返回None

add_done_callback(fn):  添加一个回调函数, 如果此时操作已经结束,将直接调用,否则将添加到_callbacks属性中, 结束后调用

set_result(result) 设置Future要保存的结果,并标志位done, 标志位done时会遍历_callbacks, 一次调用回调函数

set_exc_info()设置exception信息

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics