国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[Python]在一段Python程序中使用多次事件循環(huán)

dreamtecher / 2402人閱讀

摘要:解決方案我們可以使用函數(shù)建立一個新的事件循環(huán),并使用設(shè)置全局的事件循環(huán),這時候就可以多次運行異步的事件循環(huán)了,不過最好保存默認的并在事件循環(huán)結(jié)束的時候還原回去。

背景

我們在Python異步程序編寫中經(jīng)常要用到如下的結(jié)構(gòu)

import asyncio
async 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,這也無可厚非,理想的程序也應(yīng)該是在一個時間循環(huán)中解決掉各種異步IO的問題。
但放在終端環(huán)境如Ipython中,如果想要練習(xí)Python的異步程序的編寫的話每次都要重新開啟終端未免太過于麻煩,這時候要探尋有沒有更好的解決方案。

解決方案

我們可以使用asyncio.new_event_loop函數(shù)建立一個新的事件循環(huán),并使用asyncio.set_event_loop設(shè)置全局的事件循環(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)
感想

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40805.html

相關(guān)文章

  • [零基礎(chǔ)學(xué)python]用while來循環(huán)

    摘要:我在這里將他寫的程序恭錄于此,單元李航同學(xué)不要見怪,如果李航同學(xué)認為此舉侵犯了自己的知識產(chǎn)權(quán),可以告知我,我馬上撤下此代碼。我用的是,在輸入指令上區(qū)別于李同學(xué)程序用變量接收了輸入的內(nèi)容。 while,翻譯成中文是當...的時候,這個單詞在英語中,常常用來做為時間狀語,while ... someone do somthing,這種類型的說法是有的。在python中,它也有這個含義,不過...

    Tony 評論0 收藏0
  • python并發(fā)2:使用asyncio處理并發(fā)

    摘要:是之后引入的標準庫的,這個包使用事件循環(huán)驅(qū)動的協(xié)程實現(xiàn)并發(fā)。沒有能從外部終止線程,因為線程隨時可能被中斷。上一篇并發(fā)使用處理并發(fā)我們介紹過的,在中,只是調(diào)度執(zhí)行某物的結(jié)果。 asyncio asyncio 是Python3.4 之后引入的標準庫的,這個包使用事件循環(huán)驅(qū)動的協(xié)程實現(xiàn)并發(fā)。asyncio 包在引入標準庫之前代號 Tulip(郁金香),所以在網(wǎng)上搜索資料時,會經(jīng)常看到這種花的...

    wushuiyong 評論0 收藏0
  • python入門,編程基礎(chǔ)概念介紹(變量,條件,函數(shù),循環(huán)

    摘要:該系列文章入門,編程基礎(chǔ)概念介紹變量,條件,函數(shù),循環(huán)中的數(shù)據(jù)類型,,,,在中創(chuàng)建對象學(xué)一門編程語言正在變得越來越容易,只要念過高中甚至是初中小學(xué),能熟練聊和懂得一點點軟件的人,入門一門編程語言都不在話下。 該系列文章: 《python入門,編程基礎(chǔ)概念介紹(變量,條件,函數(shù),循環(huán))》 《python中的數(shù)據(jù)類型(list,tuple,dict,set,None)》 《在python...

    Bryan 評論0 收藏0
  • 談?wù)?em>Python協(xié)程技術(shù)的演進

    摘要:事件循環(huán)是異步編程的底層基石。對事件集合進行輪詢,調(diào)用回調(diào)函數(shù)等一輪事件循環(huán)結(jié)束,循環(huán)往復(fù)。協(xié)程直接利用代碼的執(zhí)行位置來表示狀態(tài),而回調(diào)則是維護了一堆數(shù)據(jù)結(jié)構(gòu)來處理狀態(tài)。時代的協(xié)程技術(shù)主要是,另一個比較小眾。 Coding Crush Python開發(fā)工程師 主要負責(zé)豈安科技業(yè)務(wù)風(fēng)險情報系統(tǒng)redq。 引言 1.1. 存儲器山 存儲器山是 Randal Bryant 在《深入...

    zhiwei 評論0 收藏0
  • [零基礎(chǔ)學(xué)Python]做一個小游戲

    摘要:在講述有關(guān)的時候,提到做游戲的事情后來這個事情一直沒有接續(xù)。現(xiàn)在就是開始做那個游戲的時候了。游戲過程描述程序運行起來,隨機在某個范圍內(nèi)選擇一個整數(shù)。我們現(xiàn)在做一個很小的程序,也是這樣來做。這個游戲還沒有完呢,即使用了循環(huán),后面還會繼續(xù)。 在講述有關(guān)list的時候,提到做游戲的事情,后來這個事情一直沒有接續(xù)。不是忘記了,是在想在哪個階段做最合適。經(jīng)過一段時間學(xué)習(xí),看官已經(jīng)不是純粹小白了,...

    idisfkj 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<