这是代码:
In [168]: async def myTask():
...: await asyncio.sleep(2)
...: print("processing task")
In [168]: async def generator():
...: for i in range(5):
...: asyncio.create_task(myTask())
In [168]: def abcd():
...: t0=time.time()
...: loop=asyncio.get_event_loop()
...: loop.run_until_complete(generator())
...: t1=time.time()
...: print(t1-t0)
理想情况下,调用 abc(( 应该休眠大约 10 秒(因为我还没有等待asyncio.create_task(myTask())
(,但该函数在不到 0.1 秒的时间内完成。
In [167]: abcd()
processing task
processing task
processing task
processing task
processing task
0.0004038810729980469
如果您尝试以下代码,您将在大约 2 秒后获得输出。好吧,但我们还没有等待任何任务。原因是 Jupyter 笔记本本身在事件循环中运行。因此,当您使用默认事件循环时,它实际上指向 Jupyter 笔记本的事件循环。
import asyncio
async def myTask():
await asyncio.sleep(2)
print("processing task")
for i in range(5):
asyncio.create_task(myTask())