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

首頁(yè) > 編程 > Python > 正文

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

2019-11-25 15:52:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

背景

本文主要給大家介紹了關(guān)于在Python一段程序中使用多次事件循環(huán)的相關(guān)內(nèi)容,我們?cè)赑ython異步程序編寫(xiě)中經(jīng)常要用到如下的結(jié)構(gòu)

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

這當(dāng)然是很不錯(cuò)的,但當(dāng)你第二次使用loop的時(shí)候程序就會(huì)拋出異常RuntimeError: Event loop is closed,這也無(wú)可厚非,理想的程序也應(yīng)該是在一個(gè)時(shí)間循環(huán)中解決掉各種異步IO的問(wèn)題。

但放在終端環(huán)境如Ipython中,如果想要練習(xí)Python的異步程序的編寫(xiě)的話每次都要重新開(kāi)啟終端未免太過(guò)于麻煩,這時(shí)候要探尋有沒(méi)有更好的解決方案。

解決方案

我們可以使用asyncio.new_event_loop函數(shù)建立一個(gè)新的事件循環(huán),并使用asyncio.set_event_loop設(shè)置全局的事件循環(huán),這時(shí)候就可以多次運(yùn)行異步的事件循環(huán)了,不過(guò)最好保存默認(rèn)的asyncio.get_event_loop并在事件循環(huán)結(jié)束的時(shí)候還原回去。

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

代碼

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)

感想

事件循環(huán)本來(lái)就是要一起做很多事情,在正式的Python代碼中還是只用一個(gè)默認(rèn)的事件循環(huán)比較好,平時(shí)的學(xué)習(xí)練習(xí)的話倒是隨意了。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)武林網(wǎng)的支持。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 库车县| 达日县| 巨鹿县| 米易县| 定边县| 余庆县| 仲巴县| 安义县| 乌恰县| 龙游县| 长葛市| 白水县| 万山特区| 固原市| 大兴区| 普兰县| 年辖:市辖区| 昭平县| 瑞安市| 朝阳市| 德江县| 游戏| 招远市| 临洮县| 黄浦区| 昆明市| 吴旗县| 观塘区| 临安市| 五大连池市| 长岛县| 怀安县| 仲巴县| 大新县| 鱼台县| 治多县| 铁岭市| 新巴尔虎左旗| 察隅县| 泰州市| 神池县|