来源:博客园
主题:比较异步框架和同步框架在文件IO操作的性能差异python版本:python 3.8压测工具:locustweb框架:同步:flask 异步:aiohttp、starlette异步文件模块:aiofiles、anyio.Path请求并发量: 模拟10个用户服务器配置: Intel(R) i7-12700F客户端配置:Intel(R) i7-8700 3.20GHz
flask 同步框架flask是python中轻量级web框架,特点是灵活、轻量级、扩展性高。同时flask是一个同步框架,文件操作内容是在请求中打开一个文件demo.txt,读取文件内容,然后返回文件内容。
(资料图)
from flask import Flask, requestapp = Flask(__name__)@app.route("/file")def file(): with open("demo.txt") as f: text = f.read() return textif __name__ == "__main__": app.run(port=8090, host="0.0.0.0")
压测结果并发量:453
aiohttp 异步框架aiohttp 是一个基于 asyncio 的异步 HTTP 网络模块,它既提供了服务端,又提供了客户端。由于python内置函数open不支持异步读写,所以选用异步文件读写速度最快的 aiofiles 模块,打开同一个demo.txt文件。
from aiohttp import webimport aiofilesroutes = 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)
压测结果并发量:1490
starlette 异步框架starlette 是当下火热的异步框架fastapi依赖的唯二模块之一,主要用于异步请求的处理。anyio是starlette依赖的包,一个封装asyncio的高级异步库,自带异步io操作。
from starlette.applications import Starlettefrom starlette.responses import JSONResponsefrom starlette.routing import Routefrom anyio import Pathasync def file(request): text = await Path("demo.txt").read_text() return JSONResponse(text)app = Starlette(debug=True, routes=[Route("/file", file),])
压测结果并发量:1538
对比并发曲线图对比:
参数对比:
框架 | 文件IO并发量 | 延迟 | 纯框架无IO并发量 |
---|---|---|---|
flask | 453 | 21 ms | 463 |
aiohttp | 1490 | 6 ms | 1455 |
starlette | 1538 | 6 ms | 1539 |
在文件读写方面,异步框架性能是同步框架的3倍左右。同一个框架相较于无IO并发时性能略有下降但并不是很多,这说明文件IO阻塞并严重。下一篇比较数据库IO的并发性能。
准备连载一系列关于python异步编程的文章。包括同异步框架性能对比、异步事情驱动原理等。首发微信公众号,欢迎关注第一时间阅读。
关键词:
杨馨晨:最有效的提分方法是好心态
我是杨馨晨,一名2022级高考毕业生,毕业于深圳市宝安中学(集团)高中部,现就读于中国人民大学财政学类专业
什么是舞见_什么是舞台妆
1、舞台妆是专门用于演出和登上舞台的妆容,它包含演员妆、模特妆、歌手妆、主持人妆等等,凡事要出现在舞
四川省文化大数据有限责任公司今日揭牌
川观新闻记者吴浩文 图5月29日,四川省文化大数据有限责任公司揭牌仪式暨四川省文化数字化建设清单发布会在
世界观焦点:中邮证券谋求公募牌照 将成中邮基金重要股东
今年初,中国邮政集团对外宣称,中邮证券要加快获取公募基金牌照。5月26日,新三板挂牌公司中邮基金发布公
信息动态:手机如何格式化SD卡-当前短讯
互联网可以使学生变成老师;互联网可以使名不见经传的人闻名天下;互联网可以结交志同道合的朋友;互联网可
关于我们 加入我们 联系我们 商务合作 粤ICP备2022077823号
中国创氪网 www.chuanganwang.cn 版权所有
投稿投诉联系邮箱:317 493 128 @qq.com