国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python異步編程之web框架 異步vs同步 文件IO任務(wù)壓測(cè)對(duì)比

這篇具有很好參考價(jià)值的文章主要介紹了Python異步編程之web框架 異步vs同步 文件IO任務(wù)壓測(cè)對(duì)比。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Python異步編程之web框架 異步vs同步 文件IO任務(wù)壓測(cè)對(duì)比

測(cè)試基本信息

主題:比較異步框架和同步框架在文件IO操作的性能差異
python版本:python 3.8
壓測(cè)工具:locust
web框架:同步:flask 異步:aiohttp、starlette
異步文件模塊:aiofiles、anyio.Path
請(qǐng)求并發(fā)量: 模擬10個(gè)用戶
服務(wù)器配置: Intel(R) i7-12700F
客戶端配置:Intel(R) i7-8700 3.20GHz

flask 同步框架

flask是python中輕量級(jí)web框架,特點(diǎn)是靈活、輕量級(jí)、擴(kuò)展性高。同時(shí)flask是一個(gè)同步框架,文件操作內(nèi)容是在請(qǐng)求中打開一個(gè)文件demo.txt,讀取文件內(nèi)容,然后返回文件內(nèi)容。

from flask import Flask, request

app = Flask(__name__)


@app.route('/file')
def file():
    with open("demo.txt") as f:
        text = f.read()
    return text


if __name__ == '__main__':
    app.run(port=8090, host="0.0.0.0")

壓測(cè)結(jié)果

并發(fā)量:453
Python異步編程之web框架 異步vs同步 文件IO任務(wù)壓測(cè)對(duì)比

aiohttp 異步框架

aiohttp 是一個(gè)基于 asyncio 的異步 HTTP 網(wǎng)絡(luò)模塊,它既提供了服務(wù)端,又提供了客戶端。由于python內(nèi)置函數(shù)open不支持異步讀寫,所以選用異步文件讀寫速度最快的 aiofiles 模塊,打開同一個(gè)demo.txt文件。

from aiohttp import web
import aiofiles

routes = web.RouteTableDef()

@routes.get("/file")
async def file(request):
    async with aiofiles.open("demo.txt") as fp:
        text = await fp.read()
    return web.Response(text=text)

if __name__ == '__main__':
    app = web.Application()
    app.add_routes(routes)
    web.run_app(app)

壓測(cè)結(jié)果

并發(fā)量:1490
Python異步編程之web框架 異步vs同步 文件IO任務(wù)壓測(cè)對(duì)比

starlette 異步框架

starlette 是當(dāng)下火熱的異步框架fastapi依賴的唯二模塊之一,主要用于異步請(qǐng)求的處理。anyio是starlette依賴的包,一個(gè)封裝asyncio的高級(jí)異步庫(kù),自帶異步io操作。

from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Route
from anyio import Path


async def file(request):
    text = await Path('demo.txt').read_text()
    return JSONResponse(text)


app = Starlette(debug=True, routes=[Route('/file', file),])

壓測(cè)結(jié)果

并發(fā)量:1538
Python異步編程之web框架 異步vs同步 文件IO任務(wù)壓測(cè)對(duì)比

對(duì)比

并發(fā)曲線圖對(duì)比:
Python異步編程之web框架 異步vs同步 文件IO任務(wù)壓測(cè)對(duì)比

參數(shù)對(duì)比:

框架 文件IO并發(fā)量 延遲 純框架無(wú)IO并發(fā)量
flask 453 21 ms 463
aiohttp 1490 6 ms 1455
starlette 1538 6 ms 1539

總結(jié)

在文件讀寫方面,異步框架性能是同步框架的3倍左右。同一個(gè)框架相較于無(wú)IO并發(fā)時(shí)性能略有下降但并不是很多,這說(shuō)明文件IO阻塞并嚴(yán)重。下一篇比較數(shù)據(jù)庫(kù)IO的并發(fā)性能。

準(zhǔn)備連載一系列關(guān)于python異步編程的文章。包括同異步框架性能對(duì)比、異步事情驅(qū)動(dòng)原理等。首發(fā)微信公眾號(hào),歡迎關(guān)注第一時(shí)間閱讀。
Python異步編程之web框架 異步vs同步 文件IO任務(wù)壓測(cè)對(duì)比文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-464193.html

到了這里,關(guān)于Python異步編程之web框架 異步vs同步 文件IO任務(wù)壓測(cè)對(duì)比的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux搭建Web服務(wù)器(一)——阻塞與非阻塞、同步與異步、Linux五種IO模型

    Linux搭建Web服務(wù)器(一)——阻塞與非阻塞、同步與異步、Linux五種IO模型

    目錄 0x01 阻塞與非阻塞、同步與異步 阻塞與非阻塞 同步與異步 總結(jié) 0x02 Unix、Linux上的五種IO模型 阻塞(blocking) 非阻塞(non-blocking——NIO) IO復(fù)用(IO multiplexing) 信號(hào)驅(qū)動(dòng)(signal-driven) 異步(asynchronous) 為了理清楚這幾個(gè)概念,我們可以從 數(shù)據(jù)就緒 以及 數(shù)據(jù)讀寫 層面

    2023年04月10日
    瀏覽(21)
  • python 異步任務(wù)框架 Celery 入門,速看!

    Celery 是使用 python 編寫的分布式任務(wù)調(diào)度框架。 它有幾個(gè)主要的概念: celery 應(yīng)用 用戶編寫的代碼腳本,用來(lái)定義要執(zhí)行的任務(wù),然后通過 broker 將任務(wù)發(fā)送到消息隊(duì)列中 broker 代理,通過消息隊(duì)列在客戶端和 worker 之間進(jìn)行協(xié)調(diào)。 celery 本身并不包含消息隊(duì)列,它支持一下消

    2024年02月13日
    瀏覽(24)
  • web前端框架Javascript之JavaScript 異步編程史

    web前端框架Javascript之JavaScript 異步編程史

    早期的 Web 應(yīng)用中,與后臺(tái)進(jìn)行交互時(shí),需要進(jìn)行 form 表單的提交,然后在頁(yè)面刷新后給用戶反饋結(jié)果。在頁(yè)面刷新過程中,后臺(tái)會(huì)重新返回一段 HTML 代碼,這段 HTML 中的大部分內(nèi)容與之前頁(yè)面基本相同,這勢(shì)必造成了流量的浪費(fèi),而且一來(lái)一回也延長(zhǎng)了頁(yè)面的響應(yīng)時(shí)間,總

    2024年02月14日
    瀏覽(28)
  • 【文末送書】Python高并發(fā)編程:探索異步IO和多線程并發(fā)

    【文末送書】Python高并發(fā)編程:探索異步IO和多線程并發(fā)

    歡迎關(guān)注博主 Mindtechnist 或加入【智能科技社區(qū)】一起學(xué)習(xí)和分享Linux、C、C++、Python、Matlab,機(jī)器人運(yùn)動(dòng)控制、多機(jī)器人協(xié)作,智能優(yōu)化算法,濾波估計(jì)、多傳感器信息融合,機(jī)器學(xué)習(xí),人工智能等相關(guān)領(lǐng)域的知識(shí)和技術(shù)。搜索關(guān)注公粽號(hào) 《機(jī)器和智能》 發(fā)送“刷題寶

    2024年02月15日
    瀏覽(22)
  • Python Sanic 異步 Web 框架

    Sanic 是一個(gè)基于 Python 3.6+ 的異步 Web 框架,它使用了 Python 的 async/await 語(yǔ)法來(lái)實(shí)現(xiàn)高效的非阻塞 IO 操作。 Sanic 的主要作用是提供一個(gè)快速、輕量級(jí)的方式來(lái)構(gòu)建異步 Web 服務(wù),適用于處理大量并發(fā)請(qǐng)求的場(chǎng)景。 以下是一個(gè)簡(jiǎn)單的示例代碼,演示了如何使用 Sanic 創(chuàng)建一個(gè)簡(jiǎn)單

    2024年02月22日
    瀏覽(18)
  • python異步切片下載文件(內(nèi)置redis獲取任務(wù) mongo更新任務(wù)狀態(tài)等)

    異步切片下載二進(jìn)制文件并上傳桶刪除本地文件 部分代碼來(lái)源于y小白的筆記

    2024年01月19日
    瀏覽(21)
  • 20230515學(xué)習(xí)筆記——js中的同步任務(wù)與異步任務(wù),宏任務(wù)與微任務(wù)

    20230515學(xué)習(xí)筆記——js中的同步任務(wù)與異步任務(wù),宏任務(wù)與微任務(wù)

    2023-05-15 (1)js中的同步任務(wù)與異步任務(wù) ①同步任務(wù)是指:不耗時(shí)的任務(wù),就是執(zhí)行很快, ②異步任務(wù)是指:耗時(shí)的任務(wù),它里面有一個(gè)機(jī)制是EventLoop(事件循環(huán)),即值耗時(shí)任務(wù)會(huì)被js分配到宿主環(huán)境中進(jìn)行執(zhí)行,執(zhí)行后的結(jié)果放到一個(gè)“消息隊(duì)列”中,當(dāng)js將同步任務(wù)執(zhí)行完

    2024年02月04日
    瀏覽(19)
  • 前端中的同步和異步任務(wù)詳細(xì)說(shuō)明

    一、什么是同步/異步任務(wù)? 同步任務(wù):指的是在主線程上排隊(duì)執(zhí)行的任務(wù),只有當(dāng)前一個(gè)任務(wù)執(zhí)行完畢 才能執(zhí)行下一個(gè)任務(wù)(按照順序執(zhí)行) 異步任務(wù):指的是不進(jìn)入主線程上的任務(wù),進(jìn)入任務(wù)隊(duì)列的任務(wù),只有當(dāng)任務(wù)隊(duì)列通知主線程某個(gè)異步任務(wù)可以執(zhí)行,方可進(jìn)入主線

    2024年04月26日
    瀏覽(24)
  • Python web 框架對(duì)比:Flask vs Django

    哈嘍大家好,我是咸魚 今天我們從幾個(gè)方面來(lái)比較一些現(xiàn)在流行的兩個(gè) python web 框架——Flask 和 Django,突出它們的主要特性、優(yōu)缺點(diǎn)和簡(jiǎn)單案例 到最后,大家將更好地了解哪個(gè)框架更適合自己的特定需求 參考鏈接:https://djangocentral.com/flask-vs-django-selecting-the-perfect-python-web

    2024年02月11日
    瀏覽(32)
  • this關(guān)鍵字和同步異步宏認(rèn)為微任務(wù)理解

    this關(guān)鍵字和同步異步宏認(rèn)為微任務(wù)理解

    目錄 js面試常見問題:1.this指向? 2.閉包定義和作用 3.原型鏈 4.異步協(xié)程 this this主要有以下幾個(gè)使用場(chǎng)合。 1)全局環(huán)境 (2)構(gòu)造函數(shù) (3)對(duì)象的方法 避免多層this 避免數(shù)組處理方法中的 this 避免回調(diào)函數(shù)中的 this 綁定 this 的方法 Function.prototype.call() Function.prototype

    2024年02月15日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包