async/await做了什么?

ind*_*112 8 python python-3.x async-await

我试图在python中围绕async/await.

我是在正确的轨道上吗?

  • async@coroutine函数返回coroutine/generator,而不是返回值.
  • await 提取协程/发生器的实际返回值.
     

  • async 函数结果(coroutines)意味着要添加到事件循环中.

  • await 在事件循环和等待的协程之间创建"桥梁"(启用下一个点).
  • @coroutineyield直接与事件循环通信.(跳过等待结果的直接来电者)
     

  • await 只能在异步函数中使用.

  • yield只能在里面使用@coroutine.

(@coroutine= @types.coroutine)

Jim*_*ard 11

async@coroutine函数返回coroutine/generator,而不是返回值

技术上,types.coroutine返回一个基于生成器的协程,它与生成器不同,不同于协同程序.

等待提取coroutine/generator的实际返回值.

await,类似于yield from,暂停协程的执行,直到它等待完成并返回结果.

async函数结果(coroutines)意味着要添加到事件循环中.

是.

await在事件循环和等待的协程之间创建"桥"(启用下一个点).

await创建一个挂起点,指示事件循环将发生一些I/O操作,从而允许它切换到另一个任务.

@ coroutine的yield直接与事件循环通信.(跳过等待结果的直接来电者)

不,基于生成器的协同程序yield from以类似的方式使用await,而不是yield.

await只能在异步函数中使用.

是.

yield只能在coroutine中使用.

yield from可以在基于生成器的协同程序(装饰的生成器types.coroutine)中使用,并且从Python 3.6开始,在async导致异步生成器的函数中使用.