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 的好的资料告诉我也好.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.