a5bd4448dab403a2c6bbbb45974047f5a5da5c2a
Wpyw 网速测速(命令行版)
针对中国大陆宽带(联通 / 电信 / 移动)优化的零依赖命令行测速工具。
纯 Python 标准库实现,不需要 pip install 任何东西,双击 测速.cmd 就能跑。
╭──────────────────────────────────────────────────────────────────────╮
│ Wpyw 网速测速 · 命令行版 v1.0 │
│ 联通 / 电信 / 移动宽带 · 多线程测速 · 节点实测优选 │
╰──────────────────────────────────────────────────────────────────────╯
开始时间 2026-09-17 20:22:13
测试模式 快速 下载 5s / 8 连接 上传 4s
本机地址 192.168.0.103
公网地址 2408:8214:... 中国 山东 青岛
运营商 联通 中国 山东 青岛 联通
默认网关 192.168.0.1
── ① 延迟 / 抖动 / 丢包 ────────────────────────────────────────────────
默认网关 1.7 ms ▎ 抖动 0.5 ms
阿里云 DNS 4.7 ms ▎ 抖动 2.0 ms
国际出口 184.3 ms ████████████████ 国际线路,仅供参考
测速节点 TCP 9.4 ms 到测速节点的纯网络往返(最优值)
国内平均延迟 4.7 ms 抖动 2.0 ms 丢包 0.0% ★★★★★ 极佳
── ② 下载速度 ──────────────────────────────────────────────────────────
节点 腾讯云镜像(深圳) 8 连接 · 5.0s · 共 231 MB
实测 374.40 Mbit/s = 46.8 MB/s 峰值 637.03 Mbit/s
── ③ 上传速度 ──────────────────────────────────────────────────────────
节点 China Unicom 5G(Shanghai) 4 连接 · 4.0s · 共 40 MB
实测 74.64 Mbit/s = 9.3 MB/s 峰值 167.04 Mbit/s
── ④ 结论 ──────────────────────────────────────────────────────────────
下载 374.40 Mbit/s (≈300M 档) 上传 74.64 Mbit/s (≈50M 档)
综合评级 A
用法
| 命令 | 说明 |
|---|---|
双击 测速.cmd |
标准测速(约 25–40 秒) |
python wpyw-speedtest.py --quick |
快速测速(约 15 秒) |
python wpyw-speedtest.py --full |
完整测速(约 60 秒,更接近峰值) |
python wpyw-speedtest.py --conns 16 --duration 12 |
千兆宽带建议加大并发与时长 |
python wpyw-speedtest.py --json result.json |
结果同时写入 JSON(--json - 输出到标准输出) |
python wpyw-speedtest.py --no-upload |
只测下行与延迟 |
python wpyw-speedtest.py --ascii --no-color |
老终端 / 日志重定向场景 |
全部参数见 python wpyw-speedtest.py --help。
目录里另附一份真实运行记录:
示例输出.txt(终端报告原文)与示例结果.json(机器可读结果)。 那次跑在山东青岛联通家用宽带上:下行 330 Mbit/s、上行 135 Mbit/s、国内平均延迟 10.5 ms、评级 A+、耗时 36 秒。
为什么要「节点实测优选」
同一台机器、同一条联通线路,不同节点的实测差距可以是几十倍:
| 下载节点 | 实测(8 连接) | 说明 |
|---|---|---|
| 腾讯云镜像(深圳) | 445 Mbit/s | 联通出口友好,工具默认首选 |
| 华为云镜像(贵州) | 350 Mbit/s | 备用 |
| 上海交大镜像 | 34 Mbit/s | 教育网互联一般 |
| 阿里云镜像(杭州) | 5 Mbit/s | 该线路与阿里云互联极差 |
所以工具不写死节点:先对候选节点各做一次短测(默认 2.5 秒), 实测够快就立刻停止试测并进入正式测试;下载节点与上传节点都是运行时选出来的。 结果里会明确写出本次用的是哪个节点,避免「换个节点数字就变」却不知道原因。
测量方法(以及为什么这样测)
- 下载:多线程(默认 8 连接)HTTP 循环拉取大文件,跳过前 1.2 秒慢启动, 取稳态均值;同时给出峰值与逐秒曲线(曲线能直观看到限速/抖动)。
- 上传:每轮发送固定大小请求并正常收尾(不是「发一半掐断」)。 早期版本用掐断式测量会把内核缓冲区的数据也算进去,数字虚高(实测虚高近一倍), 而且会在测速节点留下半开连接,拖慢后续测量。
- 延迟:调用系统
ping并发测试多个国内目标,抖动 = 相邻样本差的均值。 国际出口单独列出、不计入国内均值 —— 否则 8.8.8.8 的丢包会把你整条线的评分带沟里。 - 节点发现:上传节点从 speedtest.net 服务器列表里筛中国境内节点,联通节点优先, 失败则回退 Cloudflare。
判读建议
- 上行明显低于下行是正常的:家用宽带普遍不对称(例如 500M/50M)。 工具会按实测值给出档位估算,只做保守取整。
- 公共测速节点会限速排队:上行波动大时工具会明确提示「结果偏保守」。
要更准就
--full,或换时段复测。 - 延迟高但测速快:通常是 WiFi 或路由器 QoS 造成的 bufferbloat, 看「默认网关」那一行 —— 网关延迟就几十毫秒的话,问题在局域网侧,不在运营商。
- 丢包:国内目标出现丢包才值得排查(网线/水晶头/路由器负载); 国际出口丢包在晚高峰属常见现象。
环境要求
- Windows + Python 3.8 及以上(不需要任何第三方库;本机 Python 3.13 实测通过)。
- 无需管理员权限(网关、DNS 都是从
route print/ipconfig解析的)。 - 需要能访问国内镜像站(腾讯云/华为云等)与 speedtest.net(仅用于发现上传节点,失败会自动回退)。
Languages
Python
98.9%
Batchfile
1.1%