我正在尝试了解 python 中的 async/await 。
我走在正确的轨道上吗?
(@coroutine
= @types.coroutine
)
async
and @coroutine
函数返回协程/生成器,而不是返回值
就技术而言,types.coroutine
返回一个基于生成器的协程,它不同于生成器,也不同于协程。
wait 提取协程/生成器的实际返回值。
await https://www.python.org/dev/peps/pep-0492/#await-expression, 如同yield from
,暂停协程的执行,直到它所接受的等待完成并返回结果。
异步函数结果(协程)旨在添加到事件循环中。
Yes.
wait 在事件循环和等待的协程之间创建“桥梁”(启用下一个点)。
wait 创建一个挂起点,向事件循环指示将发生某些 I/O 操作,从而允许它切换到另一个任务。
@coroutine 的yield 直接与事件循环通信。 (跳过等待结果的直接调用者)
否,基于生成器的协程使用yield from
以类似的方式await
, not yield
.
wait 只能在异步函数内部使用。
Yes.
Yield 只能在协程内部使用。
yield from
可以在基于生成器的协程中使用(生成器装饰有types.coroutine
)并且,从 Python 3.6 开始,async
产生异步生成器的函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)