国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

在Python的一段程序中如何使用多次事件循環詳解

2020-02-16 10:11:02
字體:
來源:轉載
供稿:網友

背景

本文主要給大家介紹了關于在Python一段程序中使用多次事件循環的相關內容,我們在Python異步程序編寫中經常要用到如下的結構

import asyncioasync def doAsync(): await asyncio.sleep(0) #...if __name__ == "__main__": loop = asyncio.get_event_loop() loop.run_until_complete(doAsync()) loop.close()

這當然是很不錯的,但當你第二次使用loop的時候程序就會拋出異常RuntimeError: Event loop is closed,這也無可厚非,理想的程序也應該是在一個時間循環中解決掉各種異步IO的問題。

但放在終端環境如Ipython中,如果想要練習Python的異步程序的編寫的話每次都要重新開啟終端未免太過于麻煩,這時候要探尋有沒有更好的解決方案。

解決方案

我們可以使用asyncio.new_event_loop函數建立一個新的事件循環,并使用asyncio.set_event_loop設置全局的事件循環,這時候就可以多次運行異步的事件循環了,不過最好保存默認的asyncio.get_event_loop并在事件循環結束的時候還原回去。

最終我們的代碼就像這樣。

代碼

import asyncioasync 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代碼中還是只用一個默認的事件循環比較好,平時的學習練習的話倒是隨意了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林站長站的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广平县| 汶川县| 白玉县| 龙海市| 砀山县| 马龙县| 东源县| 安乡县| 樟树市| 巴东县| 靖江市| 崇信县| 古丈县| 奎屯市| 突泉县| 莱西市| 金堂县| 嘉峪关市| 永春县| 屏东市| 鹿泉市| 霍城县| 罗田县| 晋中市| 铜川市| 喜德县| 黄浦区| 阜新| 德清县| 汝城县| 关岭| 丹东市| 若尔盖县| 通海县| 邵阳市| 商洛市| 长顺县| 微山县| 侯马市| 江永县| 霍城县|