python使用speedtest测速

python编写测速程序

1.安装speedtest-cli

注意是安装speedtest-cli,而不是speedtest,如果安装了speedtest,请先卸载。

运行:pip install speedtest-cli
我安装的是2.1.3版本

2.代码示例 - 简单使用

import speedtest

# 创建 Speedtest 对象
st = speedtest.Speedtest()

# 获取服务器列表并选择最佳服务器
st.get_servers()

# 选择最佳服务器
best = st.get_best_server()


# 测试下载速度
download_speed = st.download()

# 测试上传速度
upload_speed = st.upload()

# 将速度从比特转换为兆比特
download_speed_mbps = download_speed / 1024 / 1024
upload_speed_mbps = upload_speed / 1024 / 1024

# 打印结果
print(f"下载速度:{download_speed_mbps:.2f} Mbps")
print(f"上传速度:{upload_speed_mbps:.2f} Mbps")

输出结果:

下载速度:2.22 Mbps
上传速度:6.88 Mbps

3.代码示例 - 不间断测速

import logging
import logging.config
import speedtest
from datetime import datetime

# 配置日志
logging.basicConfig(
    level=logging.INFO,  # 设置日志级别为 INFO
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('./myapp.log'),  # 日志文件路径
        logging.StreamHandler()  # 同时输出到控制台
    ]
)
# 创建一个日志记录器
logger = logging.getLogger(__name__)


def test_speed():
    # 创建 Speedtest 对象
    st = speedtest.Speedtest()

    while True:
        
        logger.info(f"{datetime.now()}获取服务器列表")
        st.get_servers()                   # 获取服务器列表并选择最佳服务器

        logger.info(f"{datetime.now()}获取最佳服务器")
        best = st.get_best_server()       # 使用最佳服务器
        logger.info(f"{datetime.now()}已经找到服务器,{best}")

        logger.info(f"{datetime.now()}开始测试下载速度")
        download_speed = st.download()    # 测试下载速度

        logger.info(f"{datetime.now()}开始测试上传速度")
        upload_speed = st.upload()       # 测试上传速度

        # 将速度从比特转换为兆比特
        download_speed_mbps = download_speed / 1024 / 1024
        upload_speed_mbps = upload_speed / 1024 / 1024

        # 打印结果
        logger.info(f"下载速度:{download_speed_mbps:.2f} Mbps")
        logger.info(f"上传速度:{upload_speed_mbps:.2f} Mbps")

while True:
    try:
        test_speed()
    except Exception as e:
        logger.info("发生错误正在重试"+str(e))

4.代码示例 - 指定测速服务器

我的服务器地址是从https://github.com/spiritLHLS/speedtest.net-CN-ID这里获取的。
以服务器地址"ookla-speedtest-central.hgconair.hgc.com.hk:8080"为例
因为指定服务器了,所以不需要再寻找和获取最佳服务器

import logging
import logging.config
import speedtest
from datetime import datetime

# 配置日志
logging.basicConfig(
    level=logging.INFO,        # 设置日志级别为 INFO
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('./myapp.log'),  # 日志文件路径
        logging.StreamHandler()  # 同时输出到控制台
    ]
)
# 创建一个日志记录器
logger = logging.getLogger(__name__)

def test_speed():
    # 创建 Speedtest 对象
    st = speedtest.Speedtest()

    logger.info(f"{ datetime.now()}指定服务器列表,http://ookla-speedtest-central.hgconair.hgc.com.hk:8080/speedtest/upload.php")
    st.get_best_server([{"url": "http://ookla-speedtest-central.hgconair.hgc.com.hk:8080/speedtest/upload.php"}])  # 指定服务器列表,服务地址为: ookla-speedtest-central.hgconair.hgc.com.hk:8080
    while True:
        # best = st.get_best_server()

        logger.info(f"{datetime.now()}开始测试下载速度")
        # 测试下载速度
        download_speed = st.download()

        logger.info(f"{datetime.now()}开始测试上传速度")
        # 测试上传速度
        upload_speed = st.upload()

        # 将速度从比特转换为兆比特
        download_speed_mbps = download_speed / 1024 / 1024
        upload_speed_mbps = upload_speed / 1024 / 1024

        # 打印结果
        logger.info(f"下载速度:{download_speed_mbps:.2f} Mbps")
        logger.info(f"上传速度:{upload_speed_mbps:.2f} Mbps")

while True:
    try:
        test_speed()
    except Exception as e:
        logger.info(f"{datetime.now()}出现错误,正在重试"+str(e))
posted @ 2025-07-09 11:44  023se  阅读(190)  评论(0)    收藏  举报