关于 SpeedTest
speedtest
是世界上流行的网速测试平台,python
有其对应的库名为 speedtest-cli
。我们可以使用其客户端进行网络测试,也可以使用类对象用代码去测试。我们执行 pip3 install speedtest-cli
即可安装。
网速测试小工具
代码
代码语言:javascript复制from speedtest_cli import Speedtest
# 实例化测试类
spt = Speedtest()
# 获取最快的服务器
spt.get_best_server()
print('=============== 开始测试下载速度 ================')
# 测试下载速度,单位是Byte
downSp = spt.download()
# 打印结果,转换为Mb
print(f'=============== 下载速度是:{downSp /1024/1024:.2f} Mb/s ================')
print('=============== 开始测试上传速度 ================')
# 测试上传速度,单位是Byte
upSp = spt.upload()
print(f'=============== 上传速度是:{upSp /1024/1024:.2f} Mb/s ================')
代码-v2
代码语言:javascript复制我们考虑做一个
GUI
的测试小工具。
# -*- coding: utf-8 -*-
import PySimpleGUI as sg
from speedtest_cli import Speedtest
import threading
# 实例化测速对象
spt = Speedtest()
# 设置主题
sg.theme('Black')
# 布局元素
one_line = [sg.Text('最佳服务器:'),sg.Text(size=(50,1),key='-BSTS-')]
two_line = [sg.Text('下载速度:'),sg.Text(size=(50,1),key='-DLS-')]
three_line = [sg.Text('上传速度:'),sg.Text(size=(50,1),key='-UPS-')]
four_line = [sg.Button('开始测试'),sg.Button('退出')]
five_line = [sg.Text(size=(50,1),key='-INFO-')]
# 布局
layout = [
one_line,
two_line,
three_line,
four_line,
five_line
]
# 创建窗口
window = sg.Window('网速测试小工具', layout)
# 事件循环 event loop
while True:
event, values = window.read(timeout=100)
if event in (sg.WIN_CLOSED, '退出'):
# 用户关闭窗口或者点击退出后退出
break
if event == '开始测试':
# 按照如下代码,窗体将会出现未响应的问题
window['-INFO-'].update('开始获取服务器...',text_color='red')
res = spt.best.get('sponsor')
print(res)
window['-BSTS-'].update(res,text_color='yellow')
window['-INFO-'].update('开始获测试下载速率...',text_color='red')
dSp1=spt.download()
dSp=f'{dSp1/1024/1024:.2f} Mb/s'
window['-DLS-'].update(dSp,text_color='yellow')
window['-INFO-'].update('开始获测试上传速率...',text_color='red')
uSp1=spt.upload()
uSp=f'{uSp1/1024/1024:.2f} Mb/s'
window['-UPS-'].update(uSp,text_color='yellow')
window['-INFO-'].update('测试完成...',text_color='red')
sg.popup_ok
print(f'Event: {event}')
print(str(values))
window.close()
代码分析
以上代码,整体上分为两部分,第一部分使用 speedtest-cli
来测速。第二部分通过 PySimpleGUI
来和用户进行交互。我们在 GUI
的事件循环中检测当发生 “开始测试” 事件的时候开始进行测速,同时对 GUI
的文本元素进行更新以提示用户当前的进度。
效果
到此,网速测试小工具开发完成,赶紧去试试吧。
Tip
眼尖的你可能已经发现,或者在你实践的过程中也会发现,当我们点击开始测试的时候,窗口会变成未响应的状态,而且中间需要更新的内容也没有出现,只在最后展示了测试结果。这是为什么呢?下节我们来揭晓。
以上就是今天的全部内容了,感谢您的阅读,我们下节再会。