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信息

 

 

猜你喜欢

转载自chenying.iteye.com/blog/2390412