鱼C-小师妹 发表于 2021-8-19 16:08:54

测网速?还是自己写程序测得更准确!

本帖最后由 不二如是 于 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 素材也放到源码啦~

快去试试,看看你家的网速够不够快!!!

源码:

柿子饼同学 发表于 2021-8-19 16:14:42

{:7_146:}

不二如是 发表于 2021-8-20 10:54:16

针不戳{:10_256:}

hrpzcf 发表于 2021-8-20 11:09:47

这个可以有

wmy674 发表于 2021-8-24 11:46:53

看一看

海滨一条鱼 发表于 2021-8-24 12:05:55

YaoShi 发表于 2021-8-24 19:36:11

运行了几次报超时错误    还没看出来问题在哪{: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")

XYcarpenter 发表于 2021-8-24 20:29:28

为什么我下载的是空文件?

Whitefoxface 发表于 2021-8-24 20:45:13

6

hanyuncanying 发表于 2021-8-24 23:27:24

{:7_146:}

不大不小甲鱼 发表于 2021-8-25 08:46:55

6666666

不大不小甲鱼 发表于 2021-8-25 09:01:13

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")

这样试试

村头那棵树彡 发表于 2021-8-25 09:57:10

你们遇到过这人个问题吗?AttributeError: module 'speedtest' has no attribute 'Speedtest'

网上说没有引用这个函数 我也不太懂

wp231957 发表于 2021-8-25 10:16:46

村头那棵树彡 发表于 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

村头那棵树彡 发表于 2021-8-25 11:17:08

wp231957 发表于 2021-8-25 10:16
pip install speedtest-cli
而不是pip install speedtest



谢谢你hxd,我pip没弄错pack 导入错了 弄的speedtest谢谢

Shaybard 发表于 2021-8-25 11:27:13

芜湖,为自己加油

BranStarkkk 发表于 2021-8-25 11:59:54

太强啦

小伤口 发表于 2021-8-25 12:07:38

差点以为我穿越了{:10_250:}{:10_250:}

YaoShi 发表于 2021-8-25 12:20:45

不大不小甲鱼 发表于 2021-8-25 09:01
import speedtest

myspeed = speedtest.Speedtest()


谢谢回复
先试了你的   正常运行    又试了我原来自己写的也可以运行了
离谱   昨天是傍晚测得   今天下午再试试
运行了几次   发现下载速度变化不大上传速度一会大一会小可能是实时速度吧   还没本事看源码测着玩吧

温木zou 发表于 2021-8-25 19:12:02

小伤口 发表于 2021-8-25 12:07
差点以为我穿越了

我看到的也是这样。。
页: [1] 2 3
查看完整版本: 测网速?还是自己写程序测得更准确!