测网速?还是自己写程序测得更准确!
本帖最后由 不二如是 于 2021-8-25 08:24 编辑在线视频:
https://www.bilibili.com/video/BV1Ag411L79v
估计很多童鞋都曾用网页在线测网速,可以是可以,但很不程序员!
今天我就用 python 手写一个网速测试的小工具,不用担心 IP 地址泄露~
先来看成果,单击“开始测试”按钮,程序就会帮我们测试当前网速~
包括下载速度和上传速度,言简意赅,欢迎童鞋们自测发弹幕比一比!
源码放在论坛啦,链接见简介。
废话不多说了,进入主题,一步一步带大家梳理程序。
首先我们安装一个库:
pip install speedtest-cli
有了它我们就不用自己去 Ping,不用依靠网络浏览器,就可以在本机测量下载、上传、延迟和丢包等互联网连接性能指标。
非常非常的方便哦!
之后,就可以开始撸代码了。
首先导入命名空间:
import speedtest
然后要用到一个 S 开头的 Speedtest 构造一个实例。
就叫 fishc 吧:
fishc= speedtest.Speedtest()
通过实例的一个方法 get_servers() 获取所有的服务器列表。
这些列表都是用来方便我们测速滴,可以在这个库的官网找到。
传送门
想测也可以在线的,不过我们就是要写代码,自己封装快捷方式{:10_307:}
先来载入:
fishc.get_servers()
得到所有的服务器列表后,再来测试真实的上传或下载速度。
接下来就是本节的重点:下载速度和上传速度。
我们创建 dl 来表示下载的结果:
dl = fishc.download()
来自于刚才实例的一个 download 方法,我们打印看下结果:
print(f"下载速度:{dl} ")
这些数据是以是以比特位为单位的。
而我们日常生活中呢,通常是以 kb(千兆节) 或者 mb(兆字节) 为单位。
除以 /1024 就是 kb,再除就是 mb:
print(f"下载速度:{dl/1024/1024} Mbits ")
接下来创建上传速度 ul,自于另外一个 upload 方法。
基本代码就这几行啦,跑一下看结果:
过程需要需要一些时间,因为首先要获得我们的服务器列表,然后再去测试上传和下载速度。
当所有的步骤都完成之后,会打印出上面两串数字。
由于我们把它转换成以兆为单位。
看到下载速度是 xxx 兆,上传速度 xxx 兆。
这里小数点的后面位数太多,我们把它换一下:
print(f"下载速度:{dl/1024/1024:.2f} Mbits ")
每个值保留两位小数点,通过格式化字符串来实现。
来看到最终结果:
还不会用格式化字符串的童鞋去看这个视频:
https://www.bilibili.com/video/BV1HT4y1K7DY?p=4
即然开头说做成小工具,那就要用到 tkinter 来包装下。
这里没办法深入讲给大家,文字版教程去论坛上看:传送门
剧透一下,很快很快很快小甲鱼老师就会出 tkinter 视频课程哦!
来把代码快速搞定!
运行:
**** Hidden Message *****
233333,应该没有比这张图速度还“快”的了吧?!
鱼C专属 logo 素材也放到源码啦~
快去试试,看看你家的网速够不够快!!!
源码:
{:7_146:} 针不戳{:10_256:} 这个可以有 看一看 好 运行了几次报超时错误 还没看出来问题在哪{:10_282:}
speedtest.ConfigRetrievalError: <urlopen error timed out>
speedtest.ConfigRetrievalError: timed out
import speedtest
myspeed = speedtest.Speedtest()
a=myspeed.get_servers()
print(a)
dl_speed = myspeed.download()
ul_speed = myspeed.upload()
print(f"下载速度:{dl_speed/1024/1024:.2f}Mbits")
print(f"上传速度:{ul_speed/1024/1024:.2f}Mbits") 为什么我下载的是空文件? 6 {:7_146:} 6666666 YaoShi 发表于 2021-8-24 19:36
运行了几次报超时错误 还没看出来问题在哪
speedtest.ConfigRetrievalError:
speedtest. ...
import speedtest
myspeed = speedtest.Speedtest()
a=myspeed.get_servers()
print(a)
dl_speed = myspeed.download()
print(f"下载速度:{dl_speed/1024/1024:.2f}Mbits")
a=myspeed.get_servers()
print(a)
ul_speed = myspeed.upload()
print(f"上传速度:{ul_speed/1024/1024:.2f}Mbits")
这样试试 你们遇到过这人个问题吗?AttributeError: module 'speedtest' has no attribute 'Speedtest'
网上说没有引用这个函数 我也不太懂 村头那棵树彡 发表于 2021-8-25 09:57
你们遇到过这人个问题吗?AttributeError: module 'speedtest' has no attribute 'Speedtest'
网上说没 ...
pip install speedtest-cli
而不是pip install speedtest
如果你这样做了 建议你先 pip uninstall speedtest然后再 pip install speedtest-cli wp231957 发表于 2021-8-25 10:16
pip install speedtest-cli
而不是pip install speedtest
谢谢你hxd,我pip没弄错pack 导入错了 弄的speedtest谢谢 芜湖,为自己加油 太强啦 差点以为我穿越了{:10_250:}{:10_250:} 不大不小甲鱼 发表于 2021-8-25 09:01
import speedtest
myspeed = speedtest.Speedtest()
谢谢回复
先试了你的 正常运行 又试了我原来自己写的也可以运行了
离谱 昨天是傍晚测得 今天下午再试试
运行了几次 发现下载速度变化不大上传速度一会大一会小可能是实时速度吧 还没本事看源码测着玩吧 小伤口 发表于 2021-8-25 12:07
差点以为我穿越了
我看到的也是这样。。