python官⽅⽂档——asyncio
Futures
Future对象⽤来衔接低级的基于回调函数的代码和⾼级的async/await代码。
Future函数
asyncio.isfuture(obj)
如果obj是下列情况之⼀返回True:
⼀个asyncio.Future实例
⼀个asyncio.Task实例
⼀个拥有_asyncio_future_blocking属性的类Future对象(python3.5加⼊的)
await和async使用方法
返回:
如果obj是Future、Task、类Future对象,返回obj
如果obj是⼀个corotine对象,返回⼀个Task包装的对象
如果obj是⼀个可等待对象,返回⼀个等待obj的Task对象
如果obj不是上述的对象,会引发TypeError异常。
重要:参考create_task()函数,⼀个更好的创建Task的⽅式。
python3.5.5:此函数接受任何awaitable对象。
Future对象
class asyncio.Future(*, loop=None)
⼀个Future对象表⽰⼀个异步操作的结果。不是线程安全的。
Future是⼀个awaitable对象。协程能等待Future对象直到他们得到⼀个结果或者抛出⼀个异常,再或者他们被取消。
典型的,Future被⽤于基于低级的回调函数代码和⾼级的async/await代码交互。(例如,使⽤asyncio transports实现的协议)。
⾸要规则是,不要在⾯向⽤户的API中揭露Future对象,推荐的⽅式是创建⼀个Future对象来调⽤ate_future()。这是⼀种可供选择的和事件循环(event loop)交互的⽅式,来实现优化他们⾃⼰的Future对象。
在3.7中修改:添加⽀持contextvars模块。
result()
返回Future对象的结果。
如果Future完成并通过set_result()函数产出⼀个结果,此时结果就被返回了。
如果Future完成并通过set_exceptions()函数返回⼀个异常,此时⽅法就会抛出⼀个异常。
如果Future被取消了,此⽅法会引发⼀个CancelledError异常。
如果Future还没有完成,此⽅法会引发⼀个InvalidStateError异常。
set_result(result)
标记Future已经完成并设置它的结果。
如果Future已经完成则会抛出⼀个InvalidStateError异常。
set_exception(exeption)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。