future是什么
在事件驱动编程模型中,会有很多的事件循环,各事件循环在创建异步事件时可以同时创建一个future对象,并将创建的异步事件与该future对象存储在一起,并将所有传入的callback回掉函数存入future中,当异步事件发生后,直接调用future的set_result函数,该函数会调用所有存在future中的回掉函数。
所以future就代表某个时间循环的某个异步事件,它让我们可以动态的向异步事件添加回掉函数。
举例说明:
from tornado.tcpserver import TCPServer
from tornado import gen
from tornado.concurrent import Future
class MyTCPConnection(object):
def __init__(self, stream, address, server):
self.stream = stream
self.address = address
self.server = server
def start_serving(self, future=None):
future = self.stream.read_until("that is all!".encode()) #在iostream中创建了一个异步读事件
future.add_done_callback(self.message_recived) #在将message_recived作为该事件的回掉函数
def message_recived(self, future):
message = future.result().decode()
if message ==

本文深入探讨Tornado中的Future概念,解释其如何代表异步事件并在事件完成后调用回调函数。接着介绍gen.coroutine装饰器,它简化了异步编程,允许以同步方式编写代码。最后剖析gen.coroutine的实现原理,包括coroutine、Runner.run和Runner.handle_yield的细节。
最低0.47元/天 解锁文章
544

被折叠的 条评论
为什么被折叠?



