关于 SpeedTest
speedtest
是世界上流行的网速测试平台,python
有其对应的库名为 speedtest-cli
。我们可以使用其客户端进行网络测试,也可以使用类对象用代码去测试。我们执行 pip3 install speedtest-cli
即可安装。
网速测试小工具
代码
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
我们考虑做一个
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
眼尖的你可能已经发现,或者在你实践的过程中也会发现,当我们点击开始测试的时候,窗口会变成未响应的状态,而且中间需要更新的内容也没有出现,只在最后展示了测试结果。这是为什么呢?下节我们来揭晓。
以上就是今天的全部内容了,感谢您的阅读,我们下节再会。