以下代码工作正常:
import asyncio
loop = asyncio.get_event_loop()
async def a ():
print('hello')
def b ():
yield from asyncio.sleep(1)
loop.run_until_complete(b())
loop.close()
print('done')
但是,以下失败:
import asyncio
loop = asyncio.get_event_loop()
async def a ():
print('hello')
def b ():
yield from a() # <=========== only 1 tiny change
loop.run_until_complete(b())
loop.close()
print('done')
装饰使它工作b
。@asyncio.coroutine
@asyncio.coroutine
但是,问题是为什么没有装饰器的第一段代码可以正常工作?文档清楚地说这asyncio.sleep
是一个协程,a
所以为什么代码在一种情况下失败而在另一种情况下工作正常?