您好,登錄后才能下訂單哦!
這篇文章主要介紹Python異步中l(wèi)oop拋出異常的解決方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
python的五大特點:1.簡單易學,開發(fā)程序時,專注的是解決問題,而不是搞明白語言本身。2.面向?qū)ο?,與其他主要的語言如C++和Java相比, Python以一種非常強大又簡單的方式實現(xiàn)面向?qū)ο缶幊獭?.可移植性,Python程序無需修改就可以在各種平臺上運行。4.解釋性,Python語言寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。
1、問題分析
第二次使用loop的時候程序就會拋出異常RuntimeError: Event loop is closed,這也無可厚非,理想的程序也應該是在一個時間循環(huán)中解決掉各種異步IO的問題。但放在終端環(huán)境如Ipython中,如果想要練習Python的異步程序的編寫的話每次都要重新開啟終端未免太過于麻煩。
2、解決
使用asyncio.new_event_loop函數(shù)建立一個新的事件循環(huán),并使用asyncio.set_event_loop設置全局的事件循環(huán),這樣就可以多次運行異步的事件循環(huán),不過最好保存默認的asyncio.get_event_loop并在事件循環(huán)結(jié)束的時候還原回去。最終我們的代碼就像這樣。
import asyncio async def doAsync(): await asyncio.sleep(0) #... def runEventLoop() 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異步中l(wèi)oop拋出異常的解決方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。