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

Python異步編程之web框架異步vs同步 無IO任務(wù)壓測對比

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

Python異步編程之web框架異步vs同步 無IO任務(wù)壓測對比

前言

在python編程中,通過協(xié)程實現(xiàn)的異步編程號稱能夠提高IO密集型任務(wù)的并發(fā)量。本系列比較web服務(wù)器同步框架和異步框架的性能差異,包括無IO接口和常見IO操作,如文件、mysql、redis等。使用壓測工具locust測試相同條件下兩種編程模式能夠處理請求的速度。

測試基本信息

主題:單純比較異步框架和同步框架的性能,無任何IO
python版本:python 3.8
壓測工具:locust
web框架:同步:flask 異步:aiohttp、starlette
請求并發(fā)量: 模擬10個用戶
服務(wù)器配置: Intel(R) i7-12700F
客戶端配置:Intel(R) i7-8700 3.20GHz

flask 同步框架

flask是python中輕量級web框架,特點是靈活、輕量級、擴展性高。flask同時是一個同步框架,flask誕生的時候python的異步編程體系還不成熟,當然截止到目前flask肯定是支持異步框架的。但是讓其作為同步框架的代表,參加pk。

from flask import Flask, request

app = Flask(__name__)


@app.route('/index')
def index():
    return "hello world"


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

壓測準備

locust是一個python語言開發(fā)的壓力測試工具,有圖形化界面,基于協(xié)程并發(fā),能夠支持在單臺機器中支持數(shù)以千計的模擬用戶,也支持分布式壓測。
使用locust壓測,并發(fā)模擬10個用戶,10個用戶盡可能快的發(fā)送請求,并發(fā)量RPS取決于請求返回的速度,也就是服務(wù)端的處理速度。

from locust import HttpUser, task

class UserBehavior(HttpUser):
    # 請求host的/index接口
    @task(1)
    def stress_index(self):
        self.client.get("/index")

locust -f locust_stress.py

訪問 127.0.0.1:8098,啟動服務(wù),按照10個模擬用戶發(fā)送請求
Python異步編程之web框架異步vs同步 無IO任務(wù)壓測對比

壓測結(jié)果

并發(fā)量:463
Python異步編程之web框架異步vs同步 無IO任務(wù)壓測對比

aiohttp 異步框架

aiohttp 是一個基于 asyncio 的異步 HTTP 網(wǎng)絡(luò)模塊,它既提供了服務(wù)端,又提供了客戶端。所以可以將aiohttp用于web框架的服務(wù)端,監(jiān)聽http請求。

from aiohttp import web


routes = web.RouteTableDef()

@routes.get("/index")
async def index(request):
    return web.Response(text="Hello World")


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

壓測結(jié)果

并發(fā)量:1455
Python異步編程之web框架異步vs同步 無IO任務(wù)壓測對比

starlette 異步框架

starlette 是當下火熱的異步框架fastapi依賴的唯二模塊之一,主要用于異步請求的處理。

from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Route
from uvicorn.main import run


async def index(request):
    return JSONResponse({'hello': 'world'})

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

if __name__ == "__main__":
    run(app, host="0.0.0.0")

壓測結(jié)果

并發(fā)量:1539
Python異步編程之web框架異步vs同步 無IO任務(wù)壓測對比

對比

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

參數(shù)對比:

框架 并發(fā)量 延遲
flask 463 19 ms
aiohttp 1455 6 ms
starlette 1539 5 ms

總結(jié)

可以看出異步框架的性能是同步框架的3倍多還不止,數(shù)據(jù)如此夸張的原因是同步框架的處理所有請求都是按照順序執(zhí)行的,當請求有阻塞時需要等待。而異步框架處理請求遇到阻塞可以轉(zhuǎn)而處理別的請求,所以相同時間異步框架能夠處理的請求數(shù)遠高于同步。
了解了純框架的并發(fā)能力之后,下一篇來看看接口中有IO任務(wù)的并發(fā)對比。

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

到了這里,關(guān)于Python異步編程之web框架異步vs同步 無IO任務(wù)壓測對比的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(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) 信號驅(qū)動(signal-driven) 異步(asynchronous) 為了理清楚這幾個概念,我們可以從 數(shù)據(jù)就緒 以及 數(shù)據(jù)讀寫 層面

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

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

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

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

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

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

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

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

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

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

    2024年02月22日
    瀏覽(18)
  • 20230515學習筆記——js中的同步任務(wù)與異步任務(wù),宏任務(wù)與微任務(wù)

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

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

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

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

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

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

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

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

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

    2024年02月15日
    瀏覽(19)
  • 同步編程和異步編程的區(qū)別

    同步編程和異步編程的區(qū)別

    我在這里用幾個例子(附帶圖文)給你們講解一下,具體區(qū)別。 ? 一、同步 執(zhí)行步驟: step1 ===》 step2 ===》step3 ?先打印 hello moon, 再打印圖片, 等待圖片打印完,再打印 hello Jupiter 一步一步執(zhí)行,等待上一步執(zhí)行完,再執(zhí)行下一步。 二、異步 step1 ===》step2 / step3 ?先打印

    2024年02月15日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包