You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python在Linux系统中检测当前入站带宽速率(MBPS)

实现思路说明

首先拆解参考Java代码的核心逻辑:

  • Linux内核会在/sys/class/net/[网卡名]/statistics/rx_bytes文件中记录对应网卡从系统启动到当前累计接收的总字节数,该文件是系统暴露的统计接口,读取效率极高,不需要额外依赖工具
  • 入站速率的计算逻辑为:间隔固定时间读取两次该文件的总字节数,两次的差值就是这段时间内接收的字节数,再换算成对应单位的速率即可
  • 代码中125000的换算逻辑:行业通用的网络速率单位MBPS指兆比特每秒,1 MBPS = 1000*1000 bit/秒 = 125000 字节/秒,所以字节差值除以125000就能直接得到MBPS数值;原代码乘-1是因为写反了两次读取值的先后顺序(旧值减新值得到负数,乘-1转为正数)
Python实现步骤
  • 先确定要统计的网卡名,可执行ip addr命令查看本机网卡名称,常见的有eth0、ens33、wlan0等
  • 编写读取rx_bytes文件的工具函数,直接读取文件内容转为整数即可
  • 间隔固定时间(通常取1秒)读取两次数值,计算差值后换算成MBPS

示例代码

import time

# 替换为你自己的网卡名称
ETH_INTERFACE = "eth0"
RX_BYTES_PATH = f"/sys/class/net/{ETH_INTERFACE}/statistics/rx_bytes"

def get_rx_total_bytes() -> int:
    with open(RX_BYTES_PATH, 'r', encoding='utf-8') as f:
        return int(f.readline().strip())

if __name__ == "__main__":
    # 第一次读取累计字节数
    old_total = get_rx_total_bytes()
    # 间隔1秒
    time.sleep(1)
    # 第二次读取累计字节数
    new_total = get_rx_total_bytes()
    # 换算为兆比特每秒
    current_mbps = (new_total - old_total) / 125000
    print(f"当前入站速率:{current_mbps:.2f} MBPS")

注意事项

  • 如果需要更高精度的统计,可以把间隔时间改短,比如间隔0.5秒,最终结果乘以2即可
  • 如果你需要统计的是兆字节每秒而非兆比特每秒,把换算分母改为1048576(即1024*1024)即可
  • 该实现仅适用于Linux系统,Windows、macOS没有/sys路径,需要调用对应系统的专属API实现

内容的提问来源于stack exchange,提问作者Flairings

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:45:00