最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?中的異步?for?循環(huán)示例詳解

 更新時間:2023年05月31日 15:06:22   作者:跡憶客  
這篇文章主要介紹了Python中的異步for循環(huán),我們將討論 Python 庫 asyncio 和運行異步代碼所需的函數(shù),需要的朋友可以參考下

本篇文章將提供有關(guān) Python 中異步 for 循環(huán)的完整詳細信息。 我們將討論異步函數(shù)、異步 for 循環(huán)和睡眠概念。

接下來,我們將討論 Python 庫 asyncio 和運行異步代碼所需的函數(shù)。 最后,我們將看到幾個 Python 示例,以充分理解這個概念。

Python 中的異步函數(shù)

異步函數(shù)有助于與同一程序的其他函數(shù)并行運行繁重的任務(如批處理程序,也許我們對在后臺運行進程感興趣)。 當函數(shù)不相互依賴或不完全相互依賴時,可以并行運行函數(shù)。

同步函數(shù)在任務完成后返回控制權(quán),而異步函數(shù)返回控制權(quán)以并行運行其他函數(shù)/代碼并在一段時間后取回控制權(quán)。 這樣,不僅完成了繁重的任務,還并行完成了許多其他任務。

從技術(shù)上講,同步函數(shù)會阻塞主函數(shù)的控制,而異步函數(shù)的執(zhí)行不會阻塞主函數(shù)。 這樣,主函數(shù)可以并行運行多個異步函數(shù)。

Python 中的異步 for 循環(huán)

對于同步循環(huán),它們在沒有任何暫停/給予控制的情況下執(zhí)行; 但是,要使它們異步,我們必須在一些異步函數(shù)中定義它們。 此外,我們需要在這個過程中休眠一段時間,以控制其他一些功能。

使用睡眠語句

進程/線程/函數(shù)可能會休眠一段時間; 你可以考慮休息一下。 但是,目的是在一段時間內(nèi)失去控制。

結(jié)果,其他一些功能獲得了控制權(quán)。 一段時間后,控制返回,功能恢復。

現(xiàn)在,是時候轉(zhuǎn)向 Python 中的實現(xiàn)了。 我們將逐步討論語法部分,最后,我們將展示完整的代碼。

Python 庫和函數(shù)

asyncio 是 Python 中的一個庫,用于使用 async/await 語法編寫并發(fā)程序/函數(shù)。 async 是每個函數(shù)開頭使用的關(guān)鍵字(用于創(chuàng)建異步函數(shù))。

語法是:

async def fun_a(t):

這里加入了 async ,將這個函數(shù)聲明為異步函數(shù)。

sleep 函數(shù)可以暫停協(xié)程的執(zhí)行一段時間。 協(xié)程是在執(zhí)行過程中構(gòu)成管道結(jié)構(gòu)的進程/函數(shù)。

該函數(shù)通過 await 關(guān)鍵字自愿離開 CPU 去執(zhí)行另一個協(xié)作任務。 睡眠函數(shù)的語法是:

await asyncio.sleep(1)

await 關(guān)鍵字將控制權(quán)返回給事件循環(huán)。 您可能會考慮,如果使用 await 命令調(diào)用異步函數(shù),則 sleep 語句(在 for 循環(huán)內(nèi))控制協(xié)作進程直到睡眠。

gather 函數(shù)將多個協(xié)作進程(技術(shù)上稱為協(xié)程)組合起來作為一個單元運行。 此函數(shù)按照在 gather 調(diào)用中編寫的函數(shù)的順序返回結(jié)果元組。

語法是:

results = await asyncio.gather(fun_a(5), fun_b(5))

在這里,我們正在制作 fun_a 和 fun_b 的管道,以便它們可以同時運行。

事件循環(huán)是每個異步應用程序的主要組成部分。 事件循環(huán)運行異步函數(shù)。

get_event_loop() 方法檢查是否尚未調(diào)用 set_event_loop ,它將創(chuàng)建一個事件循環(huán)并將其設置為當前。 語法是:

my_loop = asyncio.get_event_loop()

如果在循環(huán)已創(chuàng)建時再次執(zhí)行此命令,則它不會執(zhí)行任何操作。 但是,在第一次調(diào)用中,沒有創(chuàng)建循環(huán); 因此,它將創(chuàng)建一個異步循環(huán)。

如果 get_event_loop() 返回的循環(huán)是異步的,則 run_until_complete() 用于并發(fā)運行事件循環(huán)。 語法是:

my_loop.run_until_complete(main())

如果主函數(shù)是異步的,則此語句將并發(fā)運行代碼。

異步代碼

對運行異步函數(shù)/例程/進程所需的概念和 Python 庫有了清晰的認識,是時候看一個完整的編碼示例了:

import asyncio
async def fun_a(t):
    for i in range(t):
        print("fun_a", end=' ')
        await asyncio.sleep(1)
    return 1
async def fun_b(t):
    for i in range(t):
        print("fun_b", end=' ')
        await asyncio.sleep(1)
    return 2
async def main():
    results = await asyncio.gather(fun_a(5), fun_b(5))
    print(results)
my_loop = asyncio.get_event_loop()
my_loop.run_until_complete(main())

在這段代碼的頂部(第一行),我們導入了 asyncio 庫。 這個庫有一個調(diào)用異步函數(shù)并發(fā)運行的必需函數(shù); 他們已經(jīng)用語法進行了討論。

接下來,我們有兩個異步函數(shù)—— fun_afun_b,我們希望它們同時運行。 同樣,我們想從主函數(shù)調(diào)用異步函數(shù)。 因此,main 也被創(chuàng)建為一個異步函數(shù)。

另外,請注意我們將 5 傳遞給我們的函數(shù)以在其中運行五次循環(huán)。 所以稍后,您可以看到輸出并得到循環(huán)沒有完全運行的想法; 每個都進入睡眠狀態(tài)并控制另一個功能。

我們將在輸出后重復這一點。

在 main 函數(shù)中,我們調(diào)用了 gather 函數(shù)并傳遞了我們的異步函數(shù),以便它們可以并行運行。 gather 函數(shù)返回一個元組,它有兩個從我們的目標異步函數(shù)返回的值。

我們終于來到了最后兩行。 在倒數(shù)第二行,我們調(diào)用了 get_event_loop 函數(shù)來創(chuàng)建一個循環(huán)。 在最后一行,使用我們的循環(huán),我們調(diào)用了 run_until_complete 函數(shù)來開始異步運行我們的主函數(shù)。

此代碼的輸出是:

fun_a fun_b fun_a fun_b fun_a fun_b fun_a fun_b fun_a fun_b [1, 2]

首先,請注意我們的循環(huán)并不完全像傳統(tǒng)代碼那樣運行; 相反,兩個循環(huán)同時運行。 您可以看到兩個函數(shù) print 語句的結(jié)果。

最后,[1, 2] 是主函數(shù)從我們的異步函數(shù)接收到的元組。 1 和 2 由我們的異步函數(shù)返回,并按照我們在 gather 函數(shù)中編寫這些函數(shù)的順序排列。

到此這篇關(guān)于Python 中的異步 for 循環(huán)的文章就介紹到這了,更多相關(guān)Python異步 for 循環(huán)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python字符串格式化常用手段及注意事項

    Python字符串格式化常用手段及注意事項

    這篇文章主要介紹了Python字符串格式化常用手段,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Django JWT Token RestfulAPI用戶認證詳解

    Django JWT Token RestfulAPI用戶認證詳解

    這篇文章主要介紹了Django JWT Token RestfulAPI用戶認證詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Python使用低通濾波器模糊圖像功能實現(xiàn)

    Python使用低通濾波器模糊圖像功能實現(xiàn)

    這篇文章主要介紹了Python使用低通濾波器模糊圖像,我們介紹了多種不同類型的濾波器核與卷積操作,使用 scipy.ndimage 模塊中的濾波器模糊圖像,利用 scipy.fftpack 模塊的 fft2() 函數(shù)實現(xiàn)高斯模糊,介紹了scipy.signal模塊的彩色圖像頻域卷積,需要的朋友可以參考下
    2023-03-03
  • python thrift搭建服務端和客戶端測試程序

    python thrift搭建服務端和客戶端測試程序

    這篇文章主要為大家詳細介紹了python thrift搭建服務端和客戶端測試程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python環(huán)境搭建過程從安裝到Hello World

    Python環(huán)境搭建過程從安裝到Hello World

    這篇文章主要介紹了Python環(huán)境搭建過程從安裝到Hello World,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Pandas實現(xiàn)兩個表的連接功能的方法詳解

    Pandas實現(xiàn)兩個表的連接功能的方法詳解

    這篇文章主要和大家一起說說pandas的兩個表的連接技能merge,也就是根據(jù)一個表的條件去匹配另一個表的內(nèi)容,感興趣的可以跟隨小編一起學習一下
    2022-09-09
  • Django使用list對單個或者多個字段求values值實例

    Django使用list對單個或者多個字段求values值實例

    這篇文章主要介紹了Django使用list對單個或者多個字段求values值實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python和java?如何相互調(diào)用

    Python和java?如何相互調(diào)用

    這篇文章主要介紹了Python和java?如何相互調(diào)用,下面文章見到那的對Python和java?相互調(diào)用的方法做了個小總結(jié),具有一定的參考價值,需要的小伙伴可以參考一下,希望對你有所幫助
    2021-12-12
  • pytorch dataloader 取batch_size時候出現(xiàn)bug的解決方式

    pytorch dataloader 取batch_size時候出現(xiàn)bug的解決方式

    今天小編就為大家分享一篇pytorch dataloader 取batch_size時候出現(xiàn)bug的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • django 刪除數(shù)據(jù)庫表后重新同步的方法

    django 刪除數(shù)據(jù)庫表后重新同步的方法

    今天小編就為大家分享一篇django 刪除數(shù)據(jù)庫表后重新同步的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論

依兰县| 卓资县| 桓台县| 彭阳县| 新河县| 新安县| 靖江市| 陈巴尔虎旗| 沾化县| 龙川县| 金堂县| 孙吴县| 开化县| 措美县| 长葛市| 永寿县| 合肥市| 台江县| 黎城县| 洛扎县| 清原| 邓州市| 竹山县| 湛江市| 象州县| 哈巴河县| 巴中市| 离岛区| 房山区| 新干县| 酒泉市| 精河县| 巨鹿县| 温泉县| 宝兴县| 云梦县| 济源市| 龙胜| 裕民县| 黔江区| 伊春市|