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

Python?FastApi結(jié)合異步執(zhí)行方式

 更新時(shí)間:2024年06月21日 10:20:04   作者:郝少  
這篇文章主要介紹了Python?FastApi結(jié)合異步執(zhí)行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Python FastApi結(jié)合異步執(zhí)行

需求說明

在使用fastApi框架的時(shí)候,往往程序會(huì)卡到uvicorn.run方法的執(zhí)行步驟,從而其下面同步執(zhí)行的動(dòng)作不能被執(zhí)行,此時(shí)需要使用異步思維進(jìn)行其他動(dòng)作的執(zhí)行;

代碼

  • Web.py
from fastapi import FastAPI
app = FastAPI()


@app.get("/info")
async def info():
    return {"key": "HelloWorld"}
  • WebMain.py
import uvicorn
from threading import Thread
from time import sleep


def my_async(f):
    def wrapper(*args, **kwargs):
        thr = Thread(target=f, args=args, kwargs=kwargs)
        thr.start()
    return wrapper


@my_async
def print_info():
    sleep(5)
    print("############test")


if __name__ == '__main__':
    # 放在uvicorn.run前面,不然走不到此方法;
    print_info()
    uvicorn.run(app='Web:app', host='127.0.0.1', port=8000, reload=True, debug=True)

在FastApi中實(shí)現(xiàn)異步問題

在FastAPI應(yīng)用中使用異步特性可以提高并發(fā)性能,但如果您要調(diào)用的模型是同步的,可能會(huì)導(dǎo)致阻塞。

為了實(shí)現(xiàn)異步處理,您可以將阻塞的操作委托給線程池或進(jìn)程池,以便異步執(zhí)行。

以下是一種基本方法來實(shí)現(xiàn)異步處理圖片識(shí)別任務(wù):

from fastapi import FastAPI
from concurrent.futures import ThreadPoolExecutor
import asyncio
 
app = FastAPI()
executor = ThreadPoolExecutor(max_workers=10)  # 創(chuàng)建線程池,可以根據(jù)需求調(diào)整線程數(shù)
 
# 模擬一個(gè)阻塞的圖片識(shí)別函數(shù)
def blocking_image_recognition(image_data):
    # 模擬耗時(shí)操作,實(shí)際中會(huì)調(diào)用模型進(jìn)行識(shí)別
    asyncio.sleep(5)
    return f"Recognized: {image_data}"
 
@app.post("/recognize-image")
async def recognize_image(image_data: str):
    # 使用線程池異步執(zhí)行阻塞操作
    loop = asyncio.get_event_loop()
    result = await loop.run_in_executor(executor, blocking_image_recognition, image_data)
 
    # 此處可以將結(jié)果保存到數(shù)據(jù)庫(kù)或進(jìn)行其他操作
    # 使用異步方式進(jìn)行數(shù)據(jù)庫(kù)操作
    # ...
 
    return {"result": result}

在上述示例中,我們使用ThreadPoolExecutor創(chuàng)建了一個(gè)線程池,用于異步執(zhí)行阻塞操作。blocking_image_recognition函數(shù)模擬了一個(gè)耗時(shí)的識(shí)別操作,實(shí)際中會(huì)根據(jù)模型來實(shí)現(xiàn)。在recognize_image路由中,我們使用loop.run_in_executor將阻塞操作交給線程池來異步執(zhí)行。

在處理識(shí)別結(jié)果時(shí),您可以使用異步框架(例如Tortoise-ORM)來保存數(shù)據(jù)到數(shù)據(jù)庫(kù),確保數(shù)據(jù)庫(kù)操作也是非阻塞的。這樣,您就可以同時(shí)處理多個(gè)圖片識(shí)別任務(wù),提高并發(fā)性能。

如果需要更高級(jí)的并發(fā)控制,您還可以考慮使用異步任務(wù)隊(duì)列(例如Celery)來進(jìn)一步分布式處理圖片識(shí)別任務(wù)。 Celery允許您在多個(gè)遠(yuǎn)程機(jī)器上并行執(zhí)行任務(wù)。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)類繼承實(shí)例

    Python實(shí)現(xiàn)類繼承實(shí)例

    這篇文章主要介紹了Python實(shí)現(xiàn)類繼承實(shí)例,需要的朋友可以參考下
    2014-07-07
  • Python實(shí)現(xiàn)構(gòu)建一個(gè)儀表板的示例代碼

    Python實(shí)現(xiàn)構(gòu)建一個(gè)儀表板的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)構(gòu)建一個(gè)儀表板,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下
    2023-03-03
  • Python使用sklearn庫(kù)實(shí)現(xiàn)的各種分類算法簡(jiǎn)單應(yīng)用小結(jié)

    Python使用sklearn庫(kù)實(shí)現(xiàn)的各種分類算法簡(jiǎn)單應(yīng)用小結(jié)

    這篇文章主要介紹了Python使用sklearn庫(kù)實(shí)現(xiàn)的各種分類算法,結(jié)合實(shí)例形式分析了Python使用sklearn庫(kù)實(shí)現(xiàn)的KNN、SVM、LR、決策樹、隨機(jī)森林等算法實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-07-07
  • python套接字流重定向?qū)嵗齾R總

    python套接字流重定向?qū)嵗齾R總

    套接字是一種具有之前所說的“通信端點(diǎn)”概念的計(jì)算網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)。相當(dāng)于電話插口,沒它無法通信,這個(gè)比喻非常形象。今天我們就來匯總一下套接字流重定向的實(shí)例
    2016-03-03
  • python多進(jìn)程中的生產(chǎn)者和消費(fèi)者模型詳解

    python多進(jìn)程中的生產(chǎn)者和消費(fèi)者模型詳解

    這篇文章主要介紹了python多進(jìn)程中的生產(chǎn)者和消費(fèi)者模型,生產(chǎn)者是指生產(chǎn)數(shù)據(jù)的任務(wù),消費(fèi)者是指消費(fèi)數(shù)據(jù)的任務(wù)。當(dāng)生產(chǎn)者的生產(chǎn)能力遠(yuǎn)大于消費(fèi)者的消費(fèi)能力,生產(chǎn)者就需要等消費(fèi)者消費(fèi)完才能繼續(xù)生產(chǎn)新的數(shù)據(jù)
    2023-03-03
  • Python第三方Window模塊文件的幾種安裝方法

    Python第三方Window模塊文件的幾種安裝方法

    這篇文章主要介紹了Python第三方Window模塊文件安裝方法,需要的朋友可以參考下
    2018-11-11
  • Broadcast廣播機(jī)制在Pytorch Tensor Numpy中的使用詳解

    Broadcast廣播機(jī)制在Pytorch Tensor Numpy中的使用詳解

    python中Broadcast機(jī)制非常實(shí)用,在python中的廣播機(jī)制其實(shí)很簡(jiǎn)單,下方主要介紹Broadcast廣播機(jī)制在Pytorch Tensor Numpy中的使用,希望對(duì)你有所幫助
    2022-08-08
  • openCV入門學(xué)習(xí)基礎(chǔ)教程第一篇

    openCV入門學(xué)習(xí)基礎(chǔ)教程第一篇

    OpenCV是計(jì)算機(jī)視覺領(lǐng)域一個(gè)圖像和視頻處理庫(kù),用于各種圖像和視頻分析,如面部識(shí)別和檢測(cè),車牌閱讀,照片編輯,高級(jí)機(jī)器人視覺,光學(xué)字符識(shí)別等等,下面這篇文章主要給大家介紹了關(guān)于openCV入門學(xué)習(xí)基礎(chǔ)教程第一篇的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • django寫用戶登錄判定并跳轉(zhuǎn)制定頁(yè)面的實(shí)例

    django寫用戶登錄判定并跳轉(zhuǎn)制定頁(yè)面的實(shí)例

    今天小編就為大家分享一篇django寫用戶登錄判定并跳轉(zhuǎn)制定頁(yè)面的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 最新Python idle下載、安裝與使用教程圖文詳解

    最新Python idle下載、安裝與使用教程圖文詳解

    這篇文章主要介紹了最新Python idle下載、安裝與使用教程圖文詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論

广灵县| 泽库县| 永兴县| 金华市| 舟曲县| 寿光市| 汶川县| 本溪| 临安市| 西华县| 江西省| 监利县| 武陟县| 孟州市| 界首市| 巴林右旗| 年辖:市辖区| 延边| 景泰县| 桦甸市| 商洛市| 运城市| 石泉县| 泸溪县| 嵊泗县| 准格尔旗| 宜君县| 昭平县| 获嘉县| 方山县| 桐柏县| 林周县| 万宁市| 呼图壁县| 韶关市| 屏东市| 龙岩市| 同心县| 岳普湖县| 南乐县| 中方县|