import asyncio
def foo(n):
print(f'--------- foo({n}) ----------')
async def main(loop):
loop.call_later(0.1, foo, 1)
loop.call_soon(foo, 2)
loop.call_at(loop.time() + 0.2, foo, 3)
await asyncio.sleep(1)
event_loop = asyncio.get_event_loop()
try:
event_loop.run_until_complete(main(event_loop))
finally:
event_loop.close()
有如上这段简单的代码.
在 main 函数中有 await asyncio.sleep(1) ,如果不写一行, 那么 loop.call_later(0.1, foo, 1) 和 loop.call_at(loop.time() + 0.2, foo, 3) 的结果都会看不到(sleep 的时间必须大于 delay 的时间), 这是为什么.
我的疑问在这里, Python asyncio 的事件循环机制是什么, event_loop.run_until_complete(main(event_loop)) , 这里的 run_until_complete 指的
到底是什么 complete ?
或者说有讲解 Python asyncio event loop 的好的资料告诉我也好.