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

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

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

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

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

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

它做了很多事情,例如:

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

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

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

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

相反,為框架開發(fā)人員提供了對事件循環(huán)的訪問,這些開發(fā)人員希望在 asyncio 模塊之上構(gòu)建或為其庫啟用 asyncio。

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

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

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

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

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

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

我們可以用一個有效的例子來證明這一點。

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

# 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • python使用pil生成縮略圖的方法

    python使用pil生成縮略圖的方法

    這篇文章主要介紹了python使用pil生成縮略圖的方法,涉及Python使用pil模塊操作圖片的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • Python zip()函數(shù)用法實例分析

    Python zip()函數(shù)用法實例分析

    這篇文章主要介紹了Python zip()函數(shù)用法,結(jié)合實例形式較為詳細的分析了Python zip()函數(shù)的功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-03-03
  • Python實現(xiàn)定時任務(wù)

    Python實現(xiàn)定時任務(wù)

    本篇文章主要介紹了Python實現(xiàn)定時任務(wù),主要有5種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Python實現(xiàn)PyPDF2處理PDF文件的方法示例

    Python實現(xiàn)PyPDF2處理PDF文件的方法示例

    這篇文章主要介紹了Python實現(xiàn)PyPDF2處理PDF文件的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • python 實現(xiàn)的IP 存活掃描腳本

    python 實現(xiàn)的IP 存活掃描腳本

    這篇文章主要介紹了python 實現(xiàn)的IP 存活掃描腳本,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • python中urllib.request和requests的使用及區(qū)別詳解

    python中urllib.request和requests的使用及區(qū)別詳解

    這篇文章主要介紹了python中urllib.request和requests的使用及區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 簡單易懂的python環(huán)境安裝教程

    簡單易懂的python環(huán)境安裝教程

    這篇文章主要為大家詳細介紹了簡單易懂的python環(huán)境安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Python繪制趨勢線的示例代碼

    Python繪制趨勢線的示例代碼

    趨勢線是用來顯示數(shù)據(jù)趨勢或者預(yù)測未來發(fā)展方向的一種圖形表示方法,這篇文章主要為大家詳細介紹了如何使用Python繪制趨勢線,需要的可以了解下
    2024-03-03
  • 快速解決vue.js 模板和jinja 模板沖突的問題

    快速解決vue.js 模板和jinja 模板沖突的問題

    今天小編就為大家分享一篇快速解決vue.js 模板和jinja 模板沖突的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 使用TensorFlow創(chuàng)建生成式對抗網(wǎng)絡(luò)GAN案例

    使用TensorFlow創(chuàng)建生成式對抗網(wǎng)絡(luò)GAN案例

    這篇文章主要為大家介紹了使用TensorFlow創(chuàng)建生成式對抗網(wǎng)絡(luò)GAN案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03

最新評論