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

Python?異步之如何啟動(dòng)獲取事件循環(huán)

 更新時(shí)間:2023年03月22日 15:58:44   作者:冷凍工廠  
這篇文章主要為大家介紹了Python?異步之如何啟動(dòng)獲取事件循環(huán)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1. 什么是 Asyncio 事件循環(huán)

asyncio 程序的核心是事件循環(huán)。在本節(jié)中,我們將花點(diǎn)時(shí)間看一下 asyncio 事件循環(huán)

事件循環(huán)是用于在單個(gè)線程中執(zhí)行協(xié)程的環(huán)境。事件循環(huán)是異步程序的核心。

它做了很多事情,例如:

  • 執(zhí)行協(xié)程。
  • 執(zhí)行回調(diào)。
  • 執(zhí)行網(wǎng)絡(luò)輸入/輸出。
  • 運(yùn)行子進(jìn)程。

事件循環(huán)是一種常見的設(shè)計(jì)模式,并且由于在 JavaScript 中的使用而在最近變得非常流行。

事件循環(huán),顧名思義,就是一個(gè)循環(huán)。它管理一個(gè)任務(wù)列表(協(xié)同程序)并嘗試在循環(huán)的每次迭代中按順序推進(jìn)每個(gè)任務(wù),以及執(zhí)行其他任務(wù),如執(zhí)行回調(diào)和處理 I/O。

“asyncio”模塊提供了訪問(wèn)事件循環(huán)并與之交互的功能。這不是典型應(yīng)用程序開發(fā)所必需的。

相反,為框架開發(fā)人員提供了對(duì)事件循環(huán)的訪問(wèn),這些開發(fā)人員希望在 asyncio 模塊之上構(gòu)建或?yàn)槠鋷?kù)啟用 asyncio。

asyncio 模塊提供了一個(gè)用于訪問(wèn)當(dāng)前事件循環(huán)對(duì)象的低級(jí) API,以及一套可用于與事件循環(huán)交互的方法。

低級(jí) API 適用于將 asyncio 擴(kuò)展、補(bǔ)充和集成到第三方庫(kù)中的框架開發(fā)人員。我們很少需要與 asyncio 程序中的事件循環(huán)交互,而是使用高級(jí) API。

盡管如此,我們還是可以簡(jiǎn)單地探討一下如何獲取事件循環(huán)。

2. 如何啟動(dòng)和獲取事件循環(huán)

我們?cè)?asyncio 應(yīng)用程序中創(chuàng)建事件循環(huán)的典型方法是通過(guò) asyncio.run() 函數(shù)。該函數(shù)接受一個(gè)協(xié)程并將執(zhí)行它直到完成。我們通常將它傳遞給我們的主協(xié)程并從那里運(yùn)行我們的程序。有用于創(chuàng)建和訪問(wèn)事件循環(huán)的低級(jí)函數(shù)。asyncio.new_event_loop() 函數(shù)將創(chuàng)建一個(gè)新的事件循環(huán)并返回對(duì)它的訪問(wèn)。

...
# create and access a new asyncio event loop
loop = asyncio.new_event_loop()

我們可以用一個(gè)有效的例子來(lái)證明這一點(diǎn)。

在下面的示例中,我們將創(chuàng)建一個(gè)新的事件循環(huán),然后報(bào)告其詳細(xì)信息。

# SuperFastPython.com
# example of creating an event loop
import asyncio
# create and access a new asyncio event loop
loop = asyncio.new_event_loop()
# report defaults of the loop
print(loop)

運(yùn)行示例創(chuàng)建事件循環(huán),然后報(bào)告對(duì)象的詳細(xì)信息。我們可以看到,在這種情況下,事件循環(huán)的類型為 _UnixSelectorEventLoop 并且沒(méi)有運(yùn)行,但也沒(méi)有關(guān)閉。

<_UnixSelectorEventLoop running=False closed=False debug=False>

如果 asyncio 事件循環(huán)已經(jīng)在運(yùn)行,我們可以通過(guò) asyncio.get_running_loop() 函數(shù)訪問(wèn)它。

...
# access he running event loop
loop = asyncio.get_running_loop()

還有一個(gè)用于獲取或啟動(dòng)事件循環(huán)的函數(shù),稱為 asyncio.get_event_loop(),但它在 Python 3.10 中已棄用,不應(yīng)使用。

3. 什么是事件循環(huán)對(duì)象

事件循環(huán)作為 Python 對(duì)象實(shí)現(xiàn)。事件循環(huán)對(duì)象定義了事件循環(huán)的實(shí)現(xiàn)方式,并提供了與循環(huán)交互的通用 API,定義在 AbstractEventLoop 類中。不同平臺(tái)的事件循環(huán)有不同的實(shí)現(xiàn)。例如,Windows 和基于 Unix 的操作系統(tǒng)將以不同的方式實(shí)現(xiàn)事件循環(huán),因?yàn)樵谶@些平臺(tái)上實(shí)現(xiàn)非阻塞 I/O 的底層方式不同。

SelectorEventLoop 類型的事件循環(huán)是基于 Unix 的操作系統(tǒng)(如 Linux 和 macOS)的默認(rèn)設(shè)置。

ProactorEventLoop 類型的事件循環(huán)是 Windows 上的默認(rèn)設(shè)置。

第三方庫(kù)可能會(huì)實(shí)現(xiàn)自己的事件循環(huán)以針對(duì)特定功能進(jìn)行優(yōu)化。

4. 為什么要訪問(wèn)事件循環(huán)

為什么我們要訪問(wèn) asyncio 程序之外的事件循環(huán)?

我們可能希望從正在運(yùn)行的 asyncio 程序外部訪問(wèn)事件循環(huán)的原因有很多。

  • 監(jiān)控任務(wù)的進(jìn)度。
  • 發(fā)布任務(wù)并從中獲取結(jié)果。
  • 解雇并忘記一次性任務(wù)。

asyncio 事件循環(huán)可以在程序中用作基于協(xié)程任務(wù)的線程池的替代方案。事件循環(huán)也可以嵌入到普通的 asyncio 程序中并根據(jù)需要訪問(wèn)。

以上就是Python 異步之如何啟動(dòng)獲取事件循環(huán)的詳細(xì)內(nèi)容,更多關(guān)于Python 異步事件循環(huán)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python使用sorted對(duì)字典的key或value排序

    Python使用sorted對(duì)字典的key或value排序

    這篇文章主要介紹了Python使用sorted對(duì)字典的key或value排序,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • tensorflow實(shí)現(xiàn)讀取模型中保存的值 tf.train.NewCheckpointReader

    tensorflow實(shí)現(xiàn)讀取模型中保存的值 tf.train.NewCheckpointReader

    今天小編就為大家分享一篇tensorflow實(shí)現(xiàn)讀取模型中保存的值 tf.train.NewCheckpointReader,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python在畫圖時(shí)使用特殊符號(hào)的方法總結(jié)

    Python在畫圖時(shí)使用特殊符號(hào)的方法總結(jié)

    在制作圖表時(shí),如果遇到需要利用特殊符號(hào)進(jìn)行表示時(shí)該怎么辦呢?不用慌,這篇文章為大家總結(jié)了python畫圖中使用各種特殊符號(hào)的方式,需要的可以參考一下
    2022-04-04
  • Python實(shí)現(xiàn)按中文排序的方法示例

    Python實(shí)現(xiàn)按中文排序的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)按中文排序的方法,涉及Python基于locale模塊的中文編碼與排序相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • TensorFlow實(shí)現(xiàn)打印每一層的輸出

    TensorFlow實(shí)現(xiàn)打印每一層的輸出

    今天小編就為大家分享一篇TensorFlow實(shí)現(xiàn)打印每一層的輸出,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python中 Lambda表達(dá)式全面解析

    Python中 Lambda表達(dá)式全面解析

    Lambda是一種匿名函數(shù),當(dāng)我們需要重復(fù)調(diào)用某一函數(shù),又不想寫那么多代碼時(shí)可以使用lambda表達(dá)式來(lái)代替。本文給大家介紹Python中 Lambda表達(dá)式,需要的朋友一起學(xué)習(xí)吧
    2016-11-11
  • python中re模塊知識(shí)點(diǎn)總結(jié)

    python中re模塊知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于python中re模塊知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • Python獲取央視節(jié)目單的實(shí)現(xiàn)代碼

    Python獲取央視節(jié)目單的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python獲取央視節(jié)目單的實(shí)現(xiàn)代碼,涉及Python頁(yè)面采集的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Python3 使用selenium插件爬取蘇寧商家聯(lián)系電話

    Python3 使用selenium插件爬取蘇寧商家聯(lián)系電話

    這篇文章主要介紹了Python3 selenium爬取蘇寧商家聯(lián)系電話,此處使用了selenium插件 使用的是火狐瀏覽器 信息存儲(chǔ)到csv表格里面,需要的朋友可以參考下
    2019-12-12
  • Python+SQLAlchemy輕松實(shí)現(xiàn)管理數(shù)據(jù)庫(kù)

    Python+SQLAlchemy輕松實(shí)現(xiàn)管理數(shù)據(jù)庫(kù)

    QLAlchemy是一個(gè)強(qiáng)大的ORM(對(duì)象關(guān)系映射)庫(kù),它允許您通過(guò)Python代碼與關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行交互,本文我們將學(xué)習(xí)如何使用Python和SQLAlchemy庫(kù)來(lái)輕松管理數(shù)據(jù)庫(kù),需要的可以參考下
    2023-05-05

最新評(píng)論

临西县| 九江市| 牟定县| 肇源县| 通城县| 长武县| 阜新| 绵竹市| 昆明市| 美姑县| 台江县| 攀枝花市| 法库县| 新晃| 南木林县| 绥棱县| 娱乐| 建湖县| 中阳县| 法库县| 华池县| 图木舒克市| 密云县| 沽源县| 内江市| 大丰市| 布尔津县| 永清县| 清新县| 东安县| 唐河县| 汽车| 拉孜县| 长泰县| 同心县| 仁寿县| 四子王旗| 丰城市| 那曲县| 同江市| 江门市|