欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python asyncio異步編程常見問題小結(jié)

 更新時(shí)間:2023年01月18日 09:18:56   作者:永遠(yuǎn)是少年啊  
本文主要介紹了Python asyncio異步編程常見問題小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

今天繼續(xù)給大家介紹Python相關(guān)知識,本文主要內(nèi)容是Python asyncio異步編程常見問題。

一、asyncio編程簡單示例

首先,我們來看一段簡單的Python asyncio異步編程代碼,相關(guān)代碼如下所示:

import asyncio

async def fun():
    print(1)
    await asyncio.sleep(2)
    print(2)
    return 3

async def main():
    task_list=[
        asyncio.create_task(fun()),
        asyncio.create_task(fun())
    ]
	done,pending=await asyncio.wait(task_list)
    print(done)
asyncio.run(main())

在上述代碼中,我們使用了Task列表,將兩個(gè)fun()協(xié)程函數(shù)生成的Task對象添加到task列表中,最終實(shí)現(xiàn)了這兩個(gè)函數(shù)異步執(zhí)行。上述代碼執(zhí)行結(jié)果如下所示:

二、asyncio編程常見問題

下面,我們想要簡單的修改一下上述代碼,我們把main()函數(shù)刪除,嘗試直接生成協(xié)程對象列表,結(jié)果如下所示:

import asyncio

async def fun():
    print(1)
    await asyncio.sleep(2)
    print(2)
    return 3

task_list=[
    asyncio.create_task(fun()),
    asyncio.create_task(fun())
]

done,pending=asyncio.run(asyncio.wait(task_list))
print(done)

上述代碼執(zhí)行結(jié)果如下所示:

三、報(bào)錯(cuò)原因及解決方案

從上圖中可以看出,上述代碼執(zhí)行報(bào)錯(cuò),錯(cuò)誤提示為:RuntimeError:no running event loop。
其實(shí),之所以出現(xiàn)上述報(bào)錯(cuò),直接原因在于當(dāng)前沒有事件循環(huán)。當(dāng)我們使用asyncio模塊來實(shí)現(xiàn)異步編程時(shí),asyncio模塊的優(yōu)點(diǎn)在于省略了我們創(chuàng)建事件循環(huán)的過程,但是這并不意味著asyncio異步編程不需要事件循環(huán)。事實(shí)上,在第一段代碼中,代碼:

asyncio.run(main())

在實(shí)際上創(chuàng)建了這個(gè)事件循環(huán),但是asyncio模塊屏蔽了這一細(xì)節(jié)。而正是因?yàn)橐呀?jīng)存在了事件循環(huán),因此我們才可以執(zhí)行命令:

done,pending=await asyncio.wait(task_list)

但是在上述代碼中,我們沒有創(chuàng)建事件循環(huán),而是直接將該代碼放到主程序中執(zhí)行,因此上述代碼會出現(xiàn)報(bào)錯(cuò)。
針對上述代碼,我們可以簡單修改為以下內(nèi)容:

import asyncio

async def fun():
    print(1)
    await asyncio.sleep(2)
    print(2)
    return 3

task_list=[
    fun(),
    fun()
]

done,pending=asyncio.run(asyncio.wait(task_list))
print(done)

在上述代碼中,我們的Task列表中存放的是協(xié)程對象,而不是Task對象,這樣,我們在執(zhí)行asyncio.wait時(shí)會自動創(chuàng)建一個(gè)事件循環(huán),并且把協(xié)程對象加入到事件循環(huán)中。因此上述代碼也就不會報(bào)錯(cuò)了。執(zhí)行結(jié)果如下所示:

到此這篇關(guān)于Python asyncio異步編程常見問題小結(jié)的文章就介紹到這了,更多相關(guān)Python asyncio異步內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Flask框架使用DBUtils模塊連接數(shù)據(jù)庫操作示例

    Flask框架使用DBUtils模塊連接數(shù)據(jù)庫操作示例

    這篇文章主要介紹了Flask框架使用DBUtils模塊連接數(shù)據(jù)庫操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了flask框架使用DBUtils模塊連接數(shù)據(jù)庫的常見操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • Python之torch.no_grad()函數(shù)使用和示例

    Python之torch.no_grad()函數(shù)使用和示例

    這篇文章主要介紹了Python之torch.no_grad()函數(shù)使用和示例,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Django model 中設(shè)置聯(lián)合約束和聯(lián)合索引的方法

    Django model 中設(shè)置聯(lián)合約束和聯(lián)合索引的方法

    今天小編就為大家分享一篇Django model 中設(shè)置聯(lián)合約束和聯(lián)合索引的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python pexpect ssh 遠(yuǎn)程登錄服務(wù)器的方法

    python pexpect ssh 遠(yuǎn)程登錄服務(wù)器的方法

    今天小編就為大家分享一篇python pexpect ssh 遠(yuǎn)程登錄服務(wù)器的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python 實(shí)現(xiàn)仿微信聊天時(shí)間格式化顯示的代碼

    python 實(shí)現(xiàn)仿微信聊天時(shí)間格式化顯示的代碼

    這篇文章主要介紹了python 實(shí)現(xiàn)仿微信聊天時(shí)間格式化顯示,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-04-04
  • pytorch+sklearn實(shí)現(xiàn)數(shù)據(jù)加載的流程

    pytorch+sklearn實(shí)現(xiàn)數(shù)據(jù)加載的流程

    這篇文章主要介紹了pytorch+sklearn實(shí)現(xiàn)數(shù)據(jù)加載,之前在訓(xùn)練網(wǎng)絡(luò)的時(shí)候加載數(shù)據(jù)都是稀里糊涂的放進(jìn)去的,也沒有理清楚里面的流程,今天整理一下,加深理解,也方便以后查閱,需要的朋友可以參考下
    2022-11-11
  • Python對象轉(zhuǎn)JSON字符串的方法

    Python對象轉(zhuǎn)JSON字符串的方法

    這篇文章主要介紹了Python對象轉(zhuǎn)JSON字符串的方法,涉及Python基于json模塊實(shí)現(xiàn)json轉(zhuǎn)換的實(shí)現(xiàn)技巧,非常簡便易懂,需要的朋友可以參考下
    2016-04-04
  • Python?opencv進(jìn)行圓形識別(圓檢測)實(shí)例代碼

    Python?opencv進(jìn)行圓形識別(圓檢測)實(shí)例代碼

    最近工作的項(xiàng)目上需要檢測圖像中是否有圓形,下面這篇文章主要給大家介紹了關(guān)于Python?opencv進(jìn)行圓形識別(圓檢測)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Python數(shù)據(jù)庫編程之pymysql詳解

    Python數(shù)據(jù)庫編程之pymysql詳解

    本文主要介紹了Python數(shù)據(jù)庫編程中pymysql,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 使用Python在Word中插入圖片并文字環(huán)繞的方法

    使用Python在Word中插入圖片并文字環(huán)繞的方法

    在Word文檔中插入圖片能夠提供更直觀的信息,插入圖片時(shí),我們還可以調(diào)整圖片大小,以及設(shè)置合適的文字環(huán)繞方式,本文將提供兩種使用Python在Word文檔中插入圖片并設(shè)置文字環(huán)繞的方法,需要的朋友可以參考下
    2024-06-06

最新評論