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 == "that is all!": #如果仅发送that is all!,则说明客户端消息已发送完毕
print("no more messages")
se