经典实践 | 网速测速小工具(上)

简介: 经典实践 | 网速测速小工具(上)

关于 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


眼尖的你可能已经发现,或者在你实践的过程中也会发现,当我们点击开始测试的时候,窗口会变成未响应的状态,而且中间需要更新的内容也没有出现,只在最后展示了测试结果。这是为什么呢?下节我们来揭晓。


以上就是今天的全部内容了,感谢您的阅读,我们下节再会。

相关文章
|
存储 监控 网络安全
云服务器网速很差的原因有哪些方面
云服务器网速很差的原因有哪些方面
|
7月前
|
域名解析 监控 Linux
排查网络-几个步骤 几款工具
先抛个问题,如果哪天突然发现IDC机房 和 公有云 之间的服务无法访问了(排除服务本身的问题之外,可能是网络不通,也可能是网络变的很慢使得资源无法及时下载,从而导致服务无法访问)。
|
XML 存储 缓存
网友来稿:内网环境或网速差怎么破?一文带你搭建本地Yum源。
网友来稿:内网环境或网速差怎么破?一文带你搭建本地Yum源。
203 0
网友来稿:内网环境或网速差怎么破?一文带你搭建本地Yum源。
|
Linux 网络架构 iOS开发
简单纯粹、免费开源的在线测速工具 - 中科大测速网
简单纯粹、免费开源的在线测速工具 - 中科大测速网
20811 0
|
关系型数据库 MySQL 应用服务中间件
开源QianWei搭建音乐网站,并实现公网连接
开源QianWei搭建音乐网站,并实现公网连接
462 0
|
存储 缓存 运维
综合服务器搭建
综合服务器搭建
128 0
|
Web App开发 移动开发 JavaScript
基于H5的Speedtest网速测试工具搭建
基于H5的Speedtest网速测试工具搭建
936 0
基于H5的Speedtest网速测试工具搭建
|
网络协议 测试技术 Linux
【游戏】服务器性能测试(八) 服务器网络问题整理
现在市面上有各种各样的游戏,其服务器的架构也是千差万别,一个好的服务器框架往往离不开一个稳定可靠的网络通信模块。在做服务器性能测试的时候,特别需要针对服务器的网络通信模块做详细的压测,以确保其稳定可靠。压测过程中肯定会遇到各种问题,如果能够深入去理解这些问题的话,那么就可以掌握更多的知识。本篇就简单介绍一些与网络有关的问题。
236 0
【游戏】服务器性能测试(八) 服务器网络问题整理
|
运维 安全 算法
如何选择一块真正“好用的、性能高”的远程控制软件
从而影响工作。 - 当平台出现了故障,而运维却不在工位,也不在家中,手里没有电脑办公。 - 开发人员在公司、家写了某个功能的代码, 但是没有把代码传到正在使用的电脑上。 - 远程办公,家里有电脑,
296 0
 如何选择一块真正“好用的、性能高”的远程控制软件
经典实践 | 网速测速小工具(下)
经典实践 | 网速测速小工具(下)
228 0

热门文章

最新文章