python asyncio future_Python 期物之 asyncio.Future

asyncio.Future

第三次更新,2020-02-13

Future 的作用

负责终止 loop 的循环。

1、loop 停止循环的唯一条件为 loop._stopping = True

2、将 loop 的 _stopping 设置为 True 的活,是 future 负责干,其实就是 future 的 callbacks 中实现了终止 loop 的函数,而在给 future 对象 set_result() 时,会将 callbacks 中的函数注册到 loop 对象的 _ready 队列中,故 loop 在轮询执行之后,其状态被设置为 _stopping

事件轮询图

3、比如官方 sample 里

import asyncio

# 定义一个协程

async def slow_operation(future):

await asyncio.sleep(1)

future.set_result('Future is done!')

# 获得全局循环事件

loop = asyncio.get_event_loop()

# 实例化期物对象

future = asyncio.Future()

asyncio.ensure_future(slow_operation(future))

# loop 的 run_until_complete 会将 _run_until_complete_cb 添加到 future 的完成回调列表中。而 _run_until

你可能感兴趣的:(python,asyncio,future)