当前位置: 首页 > 图灵资讯 > 行业资讯> Python异步中loop抛出异常的解决

Python异步中loop抛出异常的解决

来源:图灵python
时间: 2024-08-27 13:41:06

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电脑。