Python speedtest-cli库源码分析(第一篇:基本介绍)
(备注:本文代码基于:speedtest-cli 2.1.2)speedtest-cli是基于Python的作为测速工具,支持命令行接口(作为脚本)、也支持在代码中调用(导入模块),非常方便,这是它的开源地址:https://github.com/sivel/speedtest-cli让我们先看看官方介绍speedtest-cli介绍使用speedtest.net测试互联网带宽的命令行界面支持的P
(备注:本文代码基于: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的代码中使用
参考文章:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)