手动实现一个测网速的功能python+speedtest
引言
下午突发奇想,通常测网速我们都是用第三方的app或者网站很不方便,而且可能会泄露隐私,想试试自己写一个测网速的功能。
总体设计
借助python的第三方库speedtest
,主要设计了三个功能:测网速、显示历史记录、绘制历史记录图标。
面向对象的思想,封装三个功能,再在main
函数设计一个菜单。
测网速功能
这部分就是借助speedtest
库,创建Speedtest()
对象,使用get_servers()
可以获取当前可用的服务器节点,download()
,upload()
下载上传的速度,将得到的速度(返回的是浮点型)处理成单位是Mbps
,加上断言。
历史记录
这部分的话用到了IO流
文件操作,将刚才得到的速度放入列表写入csv文件存储
绘图
绘图部分用的就是matplotlib
完整代码
"""
-*- coding: utf-8 -*-
@Project : learningProject
@File : demo.py
@Author : xiuzhi233
@Time : 2024/1/6 14:06
@Describe :
测网速功能
"""
import speedtest
import time
import platform
import csv
from datetime import datetime
from pprint import pprint
class SpeedTester:
def __init__(self):
# 初始化 Speedtest 对象和历史记录文件路径
self.st = speedtest.Speedtest()
self.history_file = "speed_history.csv"
def measure_speed(self):
# pprint("当前可用的服务器节点", self.st.get_servers())
try:
# 使用 Speedtest 对象测量下载、上传速度和ping延迟
download_speed = self.st.download()
upload_speed = self.st.upload()
ping_latency = self.st.results.ping
# 将速度转换为 Mbps,并存储到字典中
print(download_speed, type(download_speed))
speed_mbps = {
"download": download_speed / 1e6,
"upload": upload_speed / 1e6,
}
return spe