居家办公的时候,最怕网速突然变慢。开会开到一半,视频卡成PPT。老板问话,你这边声音断断续续。更气人的是,网断了你都不知道。等发现的时候,已经错过了重要消息。
我写了个小脚本,专门对付这种破事。它用Python测网速,网一断就报警。不用盯着屏幕看,该干嘛干嘛。
先装两个库。打开命令行,敲这两行:
pip install speedtest-cli
pip install winsound
speedtest-cli用来测速,winsound是Windows自带的,能让电脑发出声音。你要是用Mac或者Linux,换成别的声音库就行。
脚本的逻辑很简单。每5分钟测一次网速。下载速度低于5Mbps,它就认为网太慢。网断了,直接拉警报。脚本会一直跑,直到你手动关掉它。
代码写起来也不复杂。我给你贴出来。复制粘贴就能用。
import speedtest
import winsound
import time
from datetime import datetime
def speed_test():
try:
st = speedtest.Speedtest()
st.get_best_server()
download_speed = st.download() / 1024 / 1024
return round(download_speed, 2)
except:
return 0
def alarm():
for i in range(5):
winsound.Beep(1000, 500)
time.sleep(0.5)
while True:
speed = speed_test()
now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
if speed == 0:
print(f'{now} 网断了!!!')
alarm()
elif speed < 5:
print(f'{now} 网速太慢,只有{speed}Mbps')
alarm()
else:
print(f'{now} 网速正常,{speed}Mbps')
time.sleep(300)
把这段代码保存成.py文件,双击就能跑。它会弹出一个黑框框,里面不断刷新信息。嫌烦的话,可以改成后台运行,不过新手不建议折腾。
测速的时候,脚本会占用一点网络资源。大概十几秒就测完了。你要是正在开会,可以临时关掉它。关掉黑框框就行,下次再开。
有个坑要提醒你。speedtest-cli第一次运行的时候,需要联网下载服务器列表。要是你的电脑极度封闭,连这一步都做不了,那就用别的方案。可以改用socket直接ping百度。不过那样只能测通不通,测不出真实网速。
还有个细节。测速太频繁会被服务商封IP。我设的5分钟一次,够用了。你非要较真,把sleep(300)改成sleep(60),但小心被拉黑。
报警声音有点吵。要是半夜断网,全家都得醒。你可以改成发邮件或者微信通知。稍微改几行代码就行。网上搜“Python 发邮件”,照着抄。
脚本跑起来以后,你就不用操心了。出门买菜,回来看看打印的记录。哪个时间段断过网,一目了然。跟运营商吵架的时候,拿这个截图当证据。
居家办公本来就不容易。网速这种基础条件,不能太拉胯。花五分钟把这个脚本跑起来,省得以后抓瞎。