iperf3 + Python-- 网络带宽、网速、网络稳定性

iperf3 + Python 到底是干嘛的?(超级直白版)

我给你用最简单、最实用、最接地气的方式讲清楚👇


一句话总结

iperf3 是专门测【网络带宽、网速、网络稳定性】的工具
Python + iperf3 = 代码自动测网速、测吞吐量、测网络好坏


它主要用来干什么?(真实业务场景)

1. 测两个设备之间的网络能跑多快

  • 电脑 ↔ 设备
  • 设备 ↔ 设备
  • 服务器 ↔ 客户端

测:

  • 最大带宽(Mbps / Gbps)
  • 上传速度
  • 下载速度
  • 丢包率
  • 延迟抖动

2. 自动化测试网络性能

你写 Python 代码,就能:

  • 自动启动 iperf3 服务端
  • 自动启动客户端测速
  • 自动获取测速结果
  • 自动生成报告
    不用人工敲命令,全自动测网

3. 设备出厂/质检时必用

你现在做的是 硬件自动化测试平台,iperf3 常用于:

  • 网口测试
  • 网卡带宽测试
  • 以太网通信稳定性测试
  • 设备数据传输能力验证

4. 排查网络问题

  • 是不是网线坏了?
  • 是不是交换机瓶颈?
  • 是不是设备网口跑不满?
  • 是不是丢包严重?

iperf3 一测就知道。


用 Python 调用 iperf3 能做什么?

你可以在你的自动化测试平台里实现:

自动测试设备网口速率

自动判断网络是否合格

自动生成测试报告

自动判断 PASS/FAIL

7×24 小时压力测试网络稳定性

完全不用人工干预。


最简单的 Python + iperf3 例子(一看就懂)

python 复制代码
import iperf3

# 客户端:去连接服务器测速
client = iperf3.Client()
client.duration = 3       # 测3秒
client.server_hostname = '192.168.1.100'  # 服务器IP

# 开始测试
result = client.run()

# 直接拿到结果!
print('上传速度:', result.sent_Mbps)
print('下载速度:', result.received_Mbps)

你什么时候会用到它?

如果你的项目里有:

  • 网口
  • 以太网
  • TCP/UDP 通信
  • 设备之间大数据传输
  • 带宽要求高

就必须用 iperf3 测网速是否达标


超级总结

iperf3 = 专业网络测速工具
Python + iperf3 = 自动化网络测速工具

主要用途:

  1. 测网络带宽(能跑多快)
  2. 测网络稳定性(掉不掉包)
  3. 自动化网口验收测试
  4. 设备出厂网口质量检测

下面我直接给你一套 可直接复制、能跑、极简版 Python iperf3 测速代码 ,适配 Windows、Linux、嵌入式设备都能用,不用额外依赖、不用 pip 装包、纯调用系统 iperf3 命令


一、iperf3 环境要求

  1. 电脑/设备 安装 iperf3
    • Windows:下载 iperf3.exe 放 PATH
    • Linux:apt install iperf3
  2. 服务端:iperf3 -s
  3. 客户端:iperf3 -c 192.168.1.100

二、Python 完整测速代码(直接用)

python 复制代码
# -*- coding:utf-8 -*-
import subprocess
import re

def run_iperf3_test(server_ip, duration=3, udp=False, bandwidth_limit=None):
    """
    直接指定iperf3.exe路径,Windows 100%能跑
    """
    # 👇 直接写死你电脑上iperf3.exe的完整路径
    iperf3_path = r"E:\app\iperf3.1.4_64\iperf3.exe"
    
    cmd = [iperf3_path, "-c", server_ip, "-t", str(duration)]
    if udp:
        cmd.append("-u")
        if bandwidth_limit:
            cmd.extend(["-b", f"{bandwidth_limit}M"])

    try:
        result = subprocess.run(
            cmd,
            capture_output=True,
            text=True,
            timeout=duration + 2
        )
        output = result.stdout
        print("iperf3输出:\n", output)

        # 解析带宽
        bw_match = re.search(r"(\d+\.?\d*)\s+Mbits/sec", output)
        # 解析丢包率
        loss_match = re.search(r"(\d+\.?\d*)%\s+loss", output)

        bandwidth = float(bw_match.group(1)) if bw_match else 0.0
        loss_rate = float(loss_match.group(1)) if loss_match else 0.0

        # 简单判定:带宽>90Mbps、丢包<1% 为合格
        pass_flag = bandwidth > 90 and loss_rate < 1.0

        return bandwidth, loss_rate, pass_flag

    except Exception as e:
        print("iperf3异常:", e)
        return 0.0, 100.0, False


# ============ 直接运行测试 ============
if __name__ == "__main__":
    # 改这里:服务端IP
    SERVER_IP = "192.168.1.167"

    print("==== TCP测速 ====")
    bw, loss, ok = run_iperf3_test(SERVER_IP, duration=3)
    print(f"带宽:{bw:.2f} Mbps | 丢包:{loss:.2f}% | {'PASS' if ok else 'FAIL'}")

    print("\n==== UDP测速(100M) ====")
    bw, loss, ok = run_iperf3_test(SERVER_IP, duration=3, udp=True, bandwidth_limit=100)
    print(f"带宽:{bw:.2f} Mbps | 丢包:{loss:.2f}% | {'PASS' if ok else 'FAIL'}")

三、直接就能用

  1. 设备/电脑上开服务端:
bash 复制代码
iperf3 -s
  1. 运行上面 Python 代码
  2. 自动输出:带宽、丢包、PASS/FAIL

相关推荐
小短腿的代码世界4 分钟前
Qt绘图引擎QPainter渲染管线:从光栅化到GPU加速的完整架构——为什么你的2D绘制慢了10倍?
开发语言·qt·架构
盛世宏博北京6 分钟前
瑞士进口探头 工业级 RJ45 温湿度传感器 支持 POE 供电与远程联动
网络·传感器·机房·温湿度
一晌小贪欢12 分钟前
第26节:自动化办公——利用 Python 自动生成动态分析报告 (PPT/PDF)
开发语言·python·数据分析·自动化·powerpoint·pandas·数据可视化
Eloudy12 分钟前
ns-3 网络仿真简介
网络·机器学习·量子计算·量子力学
程序喵大人20 分钟前
【C++并发系列】第一章:多线程读写同一个变量为什么会出错
开发语言·c++·多线程·并发
xiaoshuaishuai823 分钟前
C# vCenter跨云迁移的核心问题
开发语言·c#
西西弗Sisyphus32 分钟前
YOLO26 自定义损失函数 重写 init_criterion 方法 损失类不继承基类
pytorch·python·yolo·yolo11·yolo26
旧物有情37 分钟前
C#异步编程
网络·rpc·c#
2401_8734794038 分钟前
如何用IP离线库阻断挖矿和僵尸网络?DNS层防护实战指南
网络·网络协议·tcp/ip·ip
MXsoft61843 分钟前
**配置自动备份与变更告警:杜绝“黑变更”风险**
网络·数据库