以下来自Nutshell中Python的示例设置 x
为 23
延迟一秒半之后:
@asyncio.coroutine
def delayed_result(delay, result):
yield from asyncio.sleep(delay)
return result
loop = asyncio.get_event_loop()
x = loop.run_until_complete(delayed_result(1.5, 23))
我觉得很难理解什么是yield from asyncio.sleep(delay)
。
来自https://docs.python.org/3/library/asyncio-task.html#asyncio.sleep
Coroutine asyncio.sleep(delay, result=None, *, loop=None)
创建一个在给定时间(以秒为单位)后完成的协同程序。如果提供了结果,则在协程完成时将其生成给调用者。
所以asyncio.sleep(delay)
返回一个协程对象。
协程对象“完成”是什么意思?
yield from asyncio.sleep(delay)
为主体计划提供了什么?
谢谢。
发布于 2018-12-12 14:07:18
yield from是用于3.5 await的python3.4语法,这可能更有意义。
“完成”只意味着协程的任务已经完成。
在这种情况下,您希望使用异步睡眠,以便在睡眠任务运行时计算其他任务,如果您正在运行其他并行任务/协程,则更有意义。
https://stackoverflow.com/questions/-100003058
复制相似问题