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

使用Python实时监控下载速度并实现自动关机功能

解决实时网络下载速度监控与自动关机需求

替代speedtest-cli的实时监控方案

speedtest-cli仅支持单次测速,无法持续追踪动态流量变化。要准确获取实时下载速度,直接读取系统网络接口的流量统计数据是最可靠的方式。

方案一:跨平台实时流量采集(基于psutil)

使用psutil库可以跨Linux、macOS、Windows读取系统网络IO统计,通过定期采集接收字节数的增量计算实时速度,代码简洁且稳定。

示例代码:

import time
import psutil
import os

def calculate_realtime_speed(interval=1):
    # 获取初始接收字节数
    prev_recv = psutil.net_io_counters().bytes_recv
    time.sleep(interval)
    # 获取当前接收字节数
    curr_recv = psutil.net_io_counters().bytes_recv
    # 计算速度(转换为KB/s)
    speed = (curr_recv - prev_recv) / interval / 1024
    return round(speed, 2)

# 核心监控逻辑
if __name__ == "__main__":
    # 连续检测次数,避免临时波动误触发
    low_speed_count = 0
    threshold = 0.1  # 接近0的阈值,过滤微小后台流量
    check_interval = 5

    while True:
        current_speed = calculate_realtime_speed()
        print(f"当前下载速度: {current_speed} KB/s")
        
        if current_speed < threshold:
            low_speed_count += 1
            if low_speed_count >= 3:
                # 执行关机命令,根据系统调整:
                # Linux/macOS: "shutdown -h now"
                # Windows: "shutdown /s /t 0"
                os.system("shutdown -h now")
                break
        else:
            low_speed_count = 0
        
        time.sleep(check_interval)

方案二:Linux原生文件解析(无需第三方库)

如果不想依赖第三方库,可以直接读取/proc/net/dev文件解析指定网卡的接收流量:

import time
import os

def get_nic_recv_bytes(nic="eth0"):
    with open("/proc/net/dev", "r") as f:
        for line in f:
            if nic in line:
                parts = line.split()
                return int(parts[1])
    return 0

# 监控逻辑同方案一,替换calculate_realtime_speed函数即可

关键注意事项

  • 阈值与连续检测:不要直接判断速度为0,系统后台可能存在微小流量;建议连续3次检测低于阈值再执行关机,避免临时网络波动误操作。
  • 权限要求:执行关机命令需要管理员/root权限,应用需以对应权限启动。
  • 网卡指定:多网卡设备需通过psutil.net_io_counters(pernic=True)获取各网卡数据,选择当前活跃的网卡进行监控。

优化建议

  • 添加倒计时取消机制:检测到低速度时弹出提示,倒计时1分钟后关机,允许用户手动取消。
  • 记录监控日志:将速度数据和操作记录写入文件,方便后续排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:12:12