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

資訊專欄INFORMATION COLUMN

[Python]在一段Python程序中使用多次事件循環

dreamtecher / 2400人閱讀

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

背景

我們在Python異步程序編寫中經常要用到如下的結構

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

解決方案

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40805.html

相關文章

  • [零基礎學python]用while來循環

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

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

    摘要:是之后引入的標準庫的,這個包使用事件循環驅動的協程實現并發。沒有能從外部終止線程,因為線程隨時可能被中斷。上一篇并發使用處理并發我們介紹過的,在中,只是調度執行某物的結果。 asyncio asyncio 是Python3.4 之后引入的標準庫的,這個包使用事件循環驅動的協程實現并發。asyncio 包在引入標準庫之前代號 Tulip(郁金香),所以在網上搜索資料時,會經??吹竭@種花的...

    wushuiyong 評論0 收藏0
  • python入門,編程基礎概念介紹(變量,條件,函數,循環

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

    Bryan 評論0 收藏0
  • 談談Python協程技術的演進

    摘要:事件循環是異步編程的底層基石。對事件集合進行輪詢,調用回調函數等一輪事件循環結束,循環往復。協程直接利用代碼的執行位置來表示狀態,而回調則是維護了一堆數據結構來處理狀態。時代的協程技術主要是,另一個比較小眾。 Coding Crush Python開發工程師 主要負責豈安科技業務風險情報系統redq。 引言 1.1. 存儲器山 存儲器山是 Randal Bryant 在《深入...

    zhiwei 評論0 收藏0
  • [零基礎學Python]做一個小游戲

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

    idisfkj 評論0 收藏0

發表評論

0條評論

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