asyncio future 和 task
future 是一个协程等待对象, task 任务等待是基于这个等待对象的,task 对象继承future,
await 开启 future 对象后 当前协程会陷入等待,执行权会让出去, 当给future对象 set_result
赋值后 future才会被唤醒,task 对象继承了 future对象, 遇到io堵塞的时候就将执行权让出去,
当io结束,系统给set_result 赋值的时候,task对象就被唤醒, task是基于future 上的,
可以通过io完成事件自动给future 赋值,
个人猜测,task 遇到 io 堵塞时 会先发起执行操作,如爬虫,遇到发请求 io 时候会给系统一个发起网络请求的指令,然后给io堵塞一个回调任务,这个回调任务负责在io事件完成后自动给set_result 赋值,唤醒task 任务