Python speedtest-cli库源码分析(第一篇:基本介绍)

tech2026-10-01  28

(备注:本文代码基于:speedtest-cli 2.1.2)

    speedtest-cli是基于Python环境的测速工具,支持两种使用方式

1、支持命令行接口CLI(作为脚本)

2、支持在Python代码中使用(导入模块)

开源地址:https://github.com/sivel/speedtest-cli 让我们去看看官方介绍

 

speedtest-cli介绍

使用speedtest.net测试互联网带宽的命令行界面(CLI工具)

 

支持的Python版本

speedtest-cli适用于Python 2.4- Python3.7之间的任意版本(作者适配工作真厉害)

 

安装方式(6种)

1、pip方式(首选)

pip install speedtest-cli

2、easy_install方式

easy_install speedtest-cli

3、pip方式使用github源

pip install git+https://github.com/sivel/speedtest-cli.git

4、获取源代码,构建工具setup.py方式

git clone https://github.com/sivel/speedtest-cli.git cd speedtest-cli python setup.py install

5、使用工具wget,并为脚本文件增加可执行权限

wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py chmod +x speedtest-cli

6、使用工具curl下载,然后为脚本文件增加可执行权限

curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py chmod +x speedtest-cli

 

第一种使用方式:命令行接口,CLI工具

$ speedtest-cli -h usage: speedtest-cli [-h] [--no-download] [--no-upload] [--single] [--bytes] [--share] [--simple] [--csv] [--csv-delimiter CSV_DELIMITER] [--csv-header] [--json] [--list] [--server SERVER] [--exclude EXCLUDE] [--mini MINI] [--source SOURCE] [--timeout TIMEOUT] [--secure] [--no-pre-allocate] [--version] Command line interface for testing internet bandwidth using speedtest.net. -------------------------------------------------------------------------- https://github.com/sivel/speedtest-cli optional arguments: -h, --help show this help message and exit --no-download Do not perform download test --no-upload Do not perform upload test --single Only use a single connection instead of multiple. This simulates a typical file transfer. --bytes Display values in bytes instead of bits. Does not affect the image generated by --share, nor output from --json or --csv --share Generate and provide a URL to the speedtest.net share results image, not displayed with --csv --simple Suppress verbose output, only show basic information --csv Suppress verbose output, only show basic information in CSV format. Speeds listed in bit/s and not affected by --bytes --csv-delimiter CSV_DELIMITER Single character delimiter to use in CSV output. Default "," --csv-header Print CSV headers --json Suppress verbose output, only show basic information in JSON format. Speeds listed in bit/s and not affected by --bytes --list Display a list of speedtest.net servers sorted by distance --server SERVER Specify a server ID to test against. Can be supplied multiple times --exclude EXCLUDE Exclude a server from selection. Can be supplied multiple times --mini MINI URL of the Speedtest Mini server --source SOURCE Source IP address to bind to --timeout TIMEOUT HTTP timeout in seconds. Default 10 --secure Use HTTPS instead of HTTP when communicating with speedtest.net operated servers --no-pre-allocate Do not pre allocate upload data. Pre allocation is enabled by default to improve upload performance. To support systems with insufficient memory, use this option to avoid a MemoryError --version Show the version number and exit

 

第二种使用方式: Python API(在代码中使用)https://github.com/sivel/speedtest-cli/wiki

import speedtest servers = [] # If you want to test against a specific server # servers = [1234] threads = None # If you want to use a single threaded test # threads = 1 s = speedtest.Speedtest() s.get_servers(servers) s.get_best_server() s.download(threads=threads) s.upload(threads=threads) s.results.share() results_dict = s.results.dict()

 

不一致性介绍

此应用程序的目标不是成为可靠的延迟报告工具

不应该依赖此工具报告的延迟作为ICMP样式延迟的指示值。它是一个相对值,用于确定执行实际速度测试所需的最低延迟服务器

这个工具可能会报告与Speedtest.net不一致的结果。有几个概念需要意识到的因素到潜在的不一致:

Speedtest.net已经迁移到使用纯套接字测试,而不是基于HTTP的测试 这个应用程序是用Python编写的 不同版本的Python解释器会比其他版本更快地执行代码的某些部分 CPU和内存的容量和速度在很大程度上导致了Speedtest.net与同一网络上的其他机器之间的不一致 与不一致有关的问题将在wontfix中结束,不需要额外的理由或上下文。

 

总结

1、speedtest-cli支持作为命令行工具去使用,它提供了CLI

2、speedtest-cli可以在Python的代码中使用

 

参考文章:

https://github.com/sivel/speedtest-cli

https://github.com/sivel/speedtest-cli/wiki

最新回复(0)