python異步中loop拋出異常的解決
1、問題分析
第二次使用loop的時候程序就會拋出異常RuntimeError:Eventloopisclosed,這也無可厚非,理想的程序也應該是在一個時間循環中解決掉各種異步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學習教程請關注IT培訓機構:千鋒教育。