1、问题分析
第二次使用loop时,程序会抛出异常RuntimeErororor: Event loop is closed,这是可以理解的,理想的程序也应该在一个时间循环中解决各种异步IO的问题。但是,在IPython等终端环境中,每次练习Python的异步程序编写都太麻烦了。
2、解决
使用asyncio.new_event_loop函数建立一个新的事件循环,并使用asyncio.set_event_loop设置全局事件循环,可以多次运行异步事件循环,但最好保存默认的asyncio.get_event_loop并在事件循环结束时恢复。最后,我们的代码是这样的。
importasyncio asyncdefdoAsync(): awaitasyncio.sleep(0) #... defrunEventLoop() loop=asyncio.new_event_loop() asyncio.set_event_loop(loop) loop.run_until_complete(doAsync()) loop.close() if__name__=="__main__": oldloop=asyncio.get_event_loop() runEventLoop() runEventLoop() asyncio.set_event_loop(oldloop)
以上是Python异步中loop抛出异常解决方案,希望对大家有所帮助。更多Python学习指导:python基础教程
本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。