python中Locust的安装和使用

Locust是基于Python的性能测试工具,通过协程模拟高并发用户,使用pip安装并编写Python脚本定义用户行为,支持Web界面和命令行模式运行压测,提供实时报告与图表分析系统性能。

python中locust的安装和使用

Locust 是一个基于 Python 的开源性能测试工具,它使用协程来模拟大量用户并发访问系统,适合做负载测试和压力测试。相比 JMeter 等传统工具,Locust 更灵活,测试脚本用 Python 编写,易于维护和扩展。

安装 Locust

Locust 可以通过 pip 直接安装,推荐在虚拟环境中操作:

pip install locust

安装完成后,可通过以下命令验证是否成功:

locust –version

如果输出版本号,说明安装成功。

立即学习“Python免费学习笔记(深入)”;

编写第一个测试脚本

创建一个名为 locustfile.py 的文件(默认加载的文件名),内容如下:

from locust import HttpUser, task, between

class WebsiteUser(HttpUser):wait_time = between(1, 3) # 用户行为间隔时间(秒)

@taskdef index_page(self):    self.client.get("/")@task(2)  # 权重为2,执行频率是上面方法的两倍def view_product(self):    product_id = 1    self.client.get(f"/product/{product_id}", name="/product")

说明:

HttpUser:表示这是一个 HTTP 用户类,可以发送 HTTP 请求。wait_time = between(1, 3):每个任务执行后等待 1 到 3 秒。@task:装饰器,标记方法为一个用户行为任务。self.client:用于发送 HTTP 请求,类似 requests 库。name 参数:在报告中对 URL 分组显示,避免动态 ID 导致统计分散。

运行 Locust 测试

在包含 locustfile.py 的目录下执行:

locust

默认情况下,Locust 会启动 Web 服务,监听 http://localhost:8089

SpeakingPass-打造你的专属雅思口语语料 SpeakingPass-打造你的专属雅思口语语料

使用chatGPT帮你快速备考雅思口语,提升分数

SpeakingPass-打造你的专属雅思口语语料 25 查看详情 SpeakingPass-打造你的专属雅思口语语料

打开浏览器访问该地址,填写以下信息:

Number of users to simulate:模拟用户总数,比如 100。Spawn rate:每秒启动多少用户,比如 10。Host:目标服务地址,如 http://example.com。

点击 "Start swarming" 开始压测。

你也可以使用命令行模式(无界面)运行:

locust -f locustfile.py --headless -u 100 -r 10 --run-time 1m --host http://example.com

参数说明:

--headless:无 UI 模式。-u 100:总共模拟 100 个用户。-r 10:每秒启动 10 个用户。--run-time 1m:运行 1 分钟后自动停止。--host:目标主机地址。

查看测试结果

Locust 提供了实时的 Web 报告页面,包含以下指标:

请求总数(Total Requests)失败数(Failures)每秒请求数(RPS)平均响应时间(Average Response Time)最小/最大响应时间用户并发数(Users)

还可以切换到 “Charts” 标签页查看趋势图,帮助分析系统性能瓶颈

基本上就这些。Locust 上手快,扩展性强,适合集成到 CI/CD 中做自动化性能验证。

以上就是python中Locust的安装和使用的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/597334.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月10日 18:49:39
下一篇 2025年11月10日 18:50:24

相关推荐

  • 想成为一名软件工程师吗?自上而下学习的难度

    从小我就是一个非常好奇的人,喜欢理解和解决问题。我第一次接触编程是在高中,出于显而易见的原因,我很快就对它着迷了。 在高中时,我记得使用的第一个语言和工具是 Turing、Processing、GreenFoot 和 BlueJ。所有这些都是学习工具,除了 Turing 之外,都是 Java 抽象,…

    2025年12月19日
    000
  • Javascript没有全栈框架(这次将怀念全栈时代)

    本文开始了关于 Gergely Orosz 的 What is Old is New Again 演讲的一系列笔记,试图将他的预测(引起我强烈共鸣)转化为聪明的软件工程师的实际步骤。 “全栈正在如火如荼地进行” 当你开始考虑全栈框架时,你很可能会想到三大兄弟:PHP 的 Laravel、Ruby o…

    2025年12月19日
    000
  • 使用 Jest 覆盖各个测试中的函数

    有时您想在某些测试中模拟某个函数,但不想在其他测试中模拟。有时您想为不同的测试提供不同的模拟。 jest 使这变得棘手:它的默认行为是覆盖整个测试文件的包函数,而不仅仅是单个测试。如果您使用过 python 的 @patch 或 laravel 的服务容器等灵活工具,这似乎很奇怪。 这篇文章将向您展…

    2025年12月19日
    000
  • 无需(构建)工具的 Web 开发

    当开始一个将使用 javascript 的新 web 项目时,我们做的第一件事通常是设置构建和开发人员工具。比如最近很火的vite。您可能不知道并非所有 javascript(web)项目都需要复杂的构建工具。事实上,正如我将在本文中展示的那样,现在比以往任何时候都更容易摆脱困境。 使用index.…

    2025年12月19日
    000
  • 随意的想法#2

    大家好!这是我的一些随意的想法: 决斗大师 Roguelike 我现在把这个放在次要位置。当我有更多空闲时间时,我会回到它。使用代码而不是游戏引擎来开发/设计游戏也很困难。始终首先使用游戏引擎进行原型设计。帮助您塑造您的想法。除非给定形状,否则游戏创意是混乱且抽象的。因此,始终首先进行原型设计。不要…

    2025年12月19日
    000
  • 了解分支机构覆盖范围

    什么是分支机构覆盖范围?分支覆盖率是软件测试中使用的代码覆盖率度量,以确保给定代码段中的所有可能分支至少执行一次。这是一种衡量测试用例覆盖执行期间可以采取的不同路径的有效性的方法。• 重点:测试代码中的所有分支或决策点。• 目标:确保每个决策点(如 if 语句、循环)中的每个可能的分支(真/假)都已…

    2025年12月19日
    000
  • JavaScript 社区应该专注于让 AI/ML 能够被该语言访问,就像 Python 一样

    为什么? 我不认为 Python 作为一种语言为 AI/ML 相关的东西的开发带来任何独特的好处(你的观点可能会有所不同)。 好吧,但是为什么是 JavaScript 而不是 Java、Go 或 Rust? 首先,Rust 已经在人工智能领域爆发式增长,但只是在幕后。它为 Python 的生态系统提…

    2025年12月19日
    000
  • C++的consteval和constinit是什么_C++20中真正的编译期常量初始化

    consteval 强制函数在编译期求值,如 consteval int square(int n) 只能接受编译期常量参数;constinit 确保变量以常量初始化,如 constinit static int x = 42 避免动态初始化,用于解决静态初始化顺序问题。两者分别强化了编译期计算和初…

    2025年12月19日
    000
  • C++ double转string_C++浮点数转换为字符串

    C++中double转字符串常用方法有四种:1. std::to_string最简单但精度固定为6位;2. std::ostringstream可配合setprecision和fixed精确控制格式;3. C++17的提供高性能无异常转换,适合底层应用;4. fmt库语法现代灵活,支持高精度格式化,…

    2025年12月19日
    000
  • C++如何创建一个静态库(.lib/.a)?(详细步骤)

    C++静态库是将编译后的目标文件(.obj/.o)打包成归档文件(Windows为.lib,Linux/macOS为.a),仅提供已编译符号定义;需分离头文件与实现、只编译不链接、再用ar/lib工具打包,最后在链接时指定头文件路径、库路径及库名。 在C++中创建静态库,本质是把编译后的目标文件(.…

    2025年12月19日
    000
  • c++的std::forward_list是什么 单向链表容器的使用【STL详解】

    std::forward_list 是 C++11 引入的单向无哨兵链表,内存更紧凑、头部操作高效,但不支持随机访问、反向迭代和 O(1) size()(C++17 起可选),适用于内存敏感、头部频繁增删且单向遍历的场景。 std::forward_list 是 C++11 引入的标准模板库(STL…

    2025年12月19日
    000
  • C++如何进行Base64编码和解码?(代码示例)

    Base64 编码解码在 C++ 中无标准库支持,但可使用纯 C++ 实现:编码将每 3 字节转为 4 字符(A–z、0–9、+、/),用 ‘=’ 填充;解码严格校验长度、填充及字符合法性,并支持含空字节和中文的任意二进制数据。 Base64 编码和解码在 C++ 中没有标准…

    2025年12月19日
    000
  • c++的PGO(Profile-Guided Optimization)是什么 如何让编译器深度优化【性能调优】

    PGO是通过真实运行时数据指导编译优化的技术,分插桩、采集、重编译三阶段,依赖高质量剖面数据,可提升性能5%~20%,关键在真实输入、合理配置与环境一致性。 PGO(Profile-Guided Optimization,基于性能剖析的优化)是 C++ 编译器利用真实运行时行为数据来指导优化决策的技…

    2025年12月19日
    000
  • c++的std::move是如何实现的 强制将左值转换为右值【源码解读】

    std::move 本身不移动任何东西,仅是将左值强制转换为右值引用的类型转换工具,核心实现为 static_cast;它不执行资源转移,后续移动操作才真正触发移动构造/赋值。 std::move 本身不移动任何东西,它只是一个类型转换工具:把左值表达式“标记”为可以被移动的右值引用类型。它的实现极…

    2025年12月19日
    000
  • 如何为c++项目编写一个简单的Makefile g++编译自动化【入门教程】

    c++kquote>Makefile自动编译C++项目需定义目标、依赖和命令三部分,命令行以Tab开头;支持单文件编译、多文件分离编译链接、编译选项配置及clean清理规则,并可利用自动推导和变量简化维护。 用 Makefile 自动编译 C++ 项目,核心是告诉 make 哪些文件变了需要重…

    2025年12月19日
    000
  • 如何使用Bazel构建大型c++项目 Google的构建系统【工程化】

    Bazel构建大型C++项目的核心是模块化声明、显式依赖与可复现构建。通过BUILD文件明确定义目标源码、头文件、依赖及编译选项,划分职责清晰的包边界,用cc_library封装可复用组件,严格管控visibility与第三方依赖,并利用缓存、查询与调试工具提升效率。 用 Bazel 构建大型 C+…

    2025年12月19日
    000
  • C++ union联合体的用法_C++节省内存的数据结构技巧

    联合体是一种共享内存的数据结构,其大小等于最大成员,适用于节省内存的场景。例如,union Data { int i; float f; char str[20]; } 占20字节,但只能存储一个成员值。当多个变量不同时使用时,联合体可减少内存占用,如传感器数据存储从28字节减至20字节。为避免类型…

    2025年12月19日
    000
  • C++中的iostream为什么慢?C++输入输出性能优化技巧【IO加速】

    关闭同步、解绑流缓冲、用getline和手动解析可大幅提升iostream性能。需禁用cin/scanf混用,拼接输出并用’n’替代endl。 因为 iostream 默认与 C 标准库的 stdio 同步,并且做了大量类型安全、格式化、异常处理等额外工作,导致它比裸 C 的…

    2025年12月19日
    000
  • c++如何使用Clang的静态分析器_c++ Scan-build发现潜在bug【代码质量】

    c++kquote>Clang 的 scan-build 是轻量易用的静态分析工具,可检测空指针解引用、内存泄漏等潜在 bug;无需修改代码或深度集成构建系统,支持 macOS/Xcode 自带及 Linux/WSL 安装,通过包裹编译命令生成 HTML 报告,并提供增强选项与误报处理机制。 …

    2025年12月19日
    000
  • c++23的std::mdspan是什么_c++多维数组视图与高性能计算

    std::mdspan是C++23引入的多维数组非拥有式视图,支持任意维度与自定义布局,适用于高性能计算;它不管理内存,仅持有数据指针和形状信息,可通过指针和维度构造二维或三维视图,如auto s = std::mdspan(data, 3, 4)创建3×4视图并用s(1, 2)访问元素;…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信