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

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

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


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


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

相关文章
|
6月前
|
弹性计算 Linux 数据安全/隐私保护
幻兽帕鲁官方服务器不稳定?自建幻兽帕鲁私服稳定不卡!
幻兽帕鲁官方服务器不稳定?自建幻兽帕鲁私服稳定不卡!玩转幻兽帕鲁服务器,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云百科网分享2024年新版基于阿里云搭建幻兽帕鲁服务器教程
186 1
|
6月前
|
监控
在部署幻兽帕鲁服务器时,以下是一些建议,可以帮助您更顺利地进行部署和优化游戏体验
在部署幻兽帕鲁服务器时,以下是一些建议,可以帮助您更顺利地进行部署和优化游戏体验
321 0
|
6月前
|
存储 弹性计算 云计算
阿里云服务器、物理服务器区别对比,怎么选更合适、更便宜?
随着技术的飞速发展,服务器作为数据存储和应用的核心,其选择变得尤为关键。在云计算日益盛行的今天,我们面临一个选择:传统的物理服务器与新兴的云服务器,究竟哪一个更适合我们的需求? 首先,让我们明确物理服务器的特点。它是真实的、可触摸的硬件设备,拥有独立的资源,如CPU、内存和存储空间。由于其物理独立性,它通常被用于承载较大规模、对稳定性要求极高的网站和应用。但同时,这也意味着它的成本相对较高,不仅需要购买硬件设备,还需要承担后期的维护和升级费用。
552 0
|
负载均衡 网络架构 CDN
阿里云服务器网络不稳定,可能有以下一些原因
阿里云服务器网络不稳定,可能有以下一些原因
1770 1
|
存储 缓存 运维
综合服务器搭建
综合服务器搭建
124 0
|
弹性计算
Minecraft服务器租用使用阿里云服务器自己搭MC更方便性价比高
阿里云服务器搭建Minecraft我的世界CPU内存配置怎么选择?公网带宽和系统盘选择多少合适?一般20人以内玩家、1.12版本的大型整合包、100个以内个轻量mod,2核4G配置就够用了,公网带宽选择3M或5M都可以,系统盘就高效云盘40GB够用了。阿里云服务器配置1核1G配置3个月19.17元、1核2G配置26.46元3个月、2核4G内存42.66元、2核8G内存58.86元3个月、4核8G配置75.06元、8核16G配置139.86元
946 0
Minecraft服务器租用使用阿里云服务器自己搭MC更方便性价比高
|
存储 弹性计算 安全
阿里云服务器怎么样?性能测评和使用教程
阿里云服务器安全可靠、弹性可伸缩,CPU可选256核、内存选到3072GB,云服务器ECS规格通用型、计算型、内存型、通用算力型、裸金属、GPU、大数据等ECS实例规格,公网带宽可选到200M,绑定弹性公网EIP带宽可达1000M,共享带宽可达20000M,阿里云百科来详细说下阿里云服务器怎么样?云服务器性能评测以及使用教程:
399 0
阿里云服务器怎么样?性能测评和使用教程
你是真的“C”——经典问题解答技巧(下)
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。 求出 5位数中的所有 Lily Number。 求出0~100000之间的所有“水仙花数”并输出。 不允许创建临时变量,交换两个整数的内容 写一个函数返回参数二进制中 1 的个数。 获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 如何判断一个数是不是 2 的幂次方? 总结撒花💞
129 0