本文及资源最后更新时间 2022-04-04 by sky995
2.0 版本用 sivel/speedtest-cli 替换了 Speedtest.net 官方的 cli 工具,定制起来还是比较麻烦。最近又看了下,发现可以直接用 TCP 测速,干脆就直接用 asyncio 重写了一下,所以崭新的 3.0 版本来了。
使用方法
代码:
- wget https://bench.im/bench.py -O bench
- python3 bench
不带参数就只测 1 个最近的服务器,内置服务器测速列表转为使用两位国家代码,如测国内:
代码:
- python3 bench cn
测多个地区:
代码:
- python3 bench cn us de fr
默认每个地区随机选最多 10 个测速点。
进阶使用
1. 指定线程
代码:
- python3 bench -t 1
说是线程,其实是 TCP 链接数量,默认是 4 个,测 ping 的时候强制只用 1 个。
2. 指定每线程缓存容量
代码:
- python3 bench -b 256
太低网络跑不满,太高测量不精确。默认是 128(K),单位字节,在百兆内比较精确。
低速网络建议 16,千兆建议 2560 以上,最大 16384,需要看情况自行调节。
其他
调整了测量计算方式,和 Speedtest.net 官方相同,只保留末段的速度,和原本的整段速度有所区别。不过由于完全重写,现在的速度能做到实时回显。
在网络良好的情况下每个服务器会花费上传15+下载15+Ping10=40秒的时间,但如果网络很差,极端情况下会花费两倍左右的时间。
目前不依赖其他包,但是需要 Python >= 3.7,更早的版本暂时不支持。
更新一下:
缓存重写了一下,现在使用 -b 参数指定的是初始缓存容量,默认值为 4(K) 字节,在测试过程中会自动增加来适应速度。当然对于低速网络和 G 口以上的,还是可以自行调节初始值。
目前每个服务器只会花费 40 秒左右,不会再有两倍左右时间的情况。
有问题把脚本里 DEBUG = False 改成 DEBUG = True,再运行就有错误输出,直接贴上来。