使用Python监测网络连接和网速

大家好,网络连接和网速在工作中非常重要,本文将介绍如何使用Python程序来监测互联网连接的速度和中断情况。

1.导入所需库文件

首先,需要导入以下库:

import speedtest
import time
from datetime import datetime

这里选择了第三方库speedtest-cli来执行实际的下载和上传速度测试。

2.创建循环变量

然后,创建一个名为i的变量,并将其值设为True

i = True

这只是为了在主函数运行时保持循环,只要iTrue,程序就会一直执行下去。

3.执行主要功能的函数

def run_prog():print("Please wait while GPisc runs it's checks...\n")try:now = datetime.now()time_date = now.strftime("%d/%m/%Y %H:%M:%S")st = speedtest.Speedtest()server = st.get_best_server()server_location = server.get("name")host = server.get("host")dl_speed = st.download()ul_speed = st.upload()print(f'SERVER: {host} | LOCATION: {server_location}\n')with open('DL_LOG.txt', 'a') as log:log.writelines(f'{time_date} - DOWNLOAD SPEED: {dl_speed}\n')print(f'DOWNLOAD SPEED: {dl_speed}\n')with open('UL_LOG.txt', 'a') as log:log.writelines(f'{time_date} - UPLOAD SPEED: {ul_speed}\n')print(f'UPLOAD SPEED: {ul_speed}\n')except:with open('NO_NET_LOG.txt', 'a') as log:now = datetime.now()time_date = now.strftime("%d/%m/%Y %H:%M:%S")log.writelines(f'{time_date} - CONNECTION LOST!\n')print('CONNECTION LOST!\n')

上述代码是执行所有工作的函数。run_prog函数通过选择测试时的最佳服务器来运行下载和上传速度测试,然后将结果记录在3个.txt文件中 - DL_LOG.txtUL_LOG.txtNO_NET_LOG.txt

4.结果记录和日志

日志中的数据如下所示:

05/08/2022 23:18:52 - DOWNLOAD SPEED: 51351410.36969972
05/08/2022 23:20:14 - DOWNLOAD SPEED: 54115624.477457255
05/08/2022 23:21:31 - DOWNLOAD SPEED: 50422315.83706379
05/08/2022 23:22:53 - DOWNLOAD SPEED: 48712675.779672034
05/08/2022 23:18:52 - UPLOAD SPEED: 34615688.56533798
05/08/2022 23:20:14 - UPLOAD SPEED: 14661625.766184961
05/08/2022 23:21:31 - UPLOAD SPEED: 36268210.76668299
05/08/2022 23:22:53 - UPLOAD SPEED: 34678387.95052972
25/07/2022 21:17:30 - CONNECTION LOST!
25/07/2022 21:18:30 - CONNECTION LOST!
25/07/2022 21:19:31 - CONNECTION LOST!
25/07/2022 21:20:28 - CONNECTION LOST!

如上所示,这里没有将字节结果转换为Mbps,因为希望结果尽可能准确。如果需要,可以使用hurry.filesize 0.9(https://pypi.org/project/hurry.filesize/)来进行转换。

run_prog函数使用tryexcept来捕获除了速度结果之外的任何内容,这显然是没有连接的情况,因为如果无法连接到速度测试服务器,程序将失败,然后写入无连接日志。

while i:run_prog()time.sleep(60)print('**********************************************\n')

上述代码执行run_prog函数,然后等待60秒再次运行(这就是为什么创建了i = True)。

程序在每次执行测试时都会在控制台打印输出。

5.主函数循环

以下是完整的脚本:

import speedtest
import time
from datetime import datetime
i = True
def run_prog():print("Please wait while GPisc runs it's checks...\n")try:now = datetime.now()time_date = now.strftime("%d/%m/%Y %H:%M:%S")st = speedtest.Speedtest()server = st.get_best_server()server_location = server.get("name")host = server.get("host")dl_speed = st.download()ul_speed = st.upload()print(f'SERVER: {host} | LOCATION: {server_location}\n')with open('DL_LOG.txt', 'a') as log:log.writelines(f'{time_date} - DOWNLOAD SPEED: {dl_speed}\n')print(f'DOWNLOAD SPEED: {dl_speed}\n')with open('UL_LOG.txt', 'a') as log:log.writelines(f'{time_date} - UPLOAD SPEED: {ul_speed}\n')print(f'UPLOAD SPEED: {ul_speed}\n')except:with open('NO_NET_LOG.txt', 'a') as log:now = datetime.now()time_date = now.strftime("%d/%m/%Y %H:%M:%S")log.writelines(f'{time_date} - CONNECTION LOST!\n')print('CONNECTION LOST!\n')
while i:run_prog()time.sleep(60)print('**********************************************\n')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/728317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于 node 权限问题

执行npm install 命令错误-ERRNO-4080_npm err! if you believe this might be a permission-CSDN博客

JavaScript常见的DOM操作

文档对象模型 (DOM) 是 HTML 和 XML 文档的编程接口 常见的操作分为 创建节点 查询节点 更新节点 添加节点 删除节点 创建节点 createElement 创建新元素,接受一个元素,即要创建元素的标签名 createTextNode 创建一个文本节点 获取节点 qu…

Qt+Opencv实现视频二维码检测

编译器:Qt 5.12.2Visual Studio 2015 视觉库:OpenCV 4.5.5 能够加载MP4格式视频、读取、定位二维码并输出与反馈信息的软件 需要演示Demo可私信

《幸运的基督徒》Python

题目描述 有15个基督徒和15个非基督徒在海上遇险, 为了能让一部分人活下来不得不将其中15个人扔到海里面去, 有个人想了个办法就是大家围成一个圈,由某个人开始从1报数, 报到9的人就扔到海里面,他后面的人接着从1开始报…

软件测试相关概念和bug的相关总结

文章目录 什么是测试什么是需求测试用例(CASE)什么是BUG软件的生命周期开发模型瀑布模型螺旋模型增量模型和迭代模型 敏捷测试模型v模型W模型(双V模型) 软件测试的生命周期如何描述一个bugbug的级别bug的生命周期.产生争执怎么办 什么是测试 测试是测试人员用来检验软件的实际运…

Redis基本概念

什么是Redis 官方文档 Redis(Remote Dictionary Server) Redis 是一个开源的使用 ANSIC 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API 的非关系型数据库。 传统数据库遵循 ACID 规则。而 Nosql&…

最长异或路径 ---- (字典树求异或最大)

目录 最长异或路径: 题目大意: 思路解析: 代码实现: 最长异或路径: 题目大意: 思路解析: 现在假设有一棵这样的树,我们并不关心每条边的路径权值为多少,假设划红线的…

WPS/Office 好用的Word插件-查找替换

例如:一片文档:…………泰山…………泰(少打了山字)………… 要是把“泰”查找替换为“泰山”,就会把前面的“泰山”变成“泰山山”,这种问题除了再把“泰山山”查找替换为“泰山”,有没有更简单…

MSF编译中遇到的问题整理,视觉惯性松组合//视觉惯性松耦合

首先感谢 https://blog.csdn.net/xiaoxiaowenqiang/article/details/81192045#comments_31558035 神帖需要进一步更新,希望大家可以给作者打钱,然后可诶诒理直气壮的顺便push原作者更新 下面是readme的内容 ethzasl_msf [ROS] 多传感器卡尔曼融合框架 E…

吴恩达deeplearning.ai:机器学习项目的完整周期伦理

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏 文章目录 语音识别部署公平、偏见、伦理 这节博客中,我们主要看看构建一个机器学习的完整周期是什么,也就是说,当你想构建一个有价值的机器学习系统时&am…

Freecad Assembly4装配模型设计入门

一、基本信息 本文内容:学习Assembly4装配模型设计功能。 2024年3月7日 最新版Freecad 0.21.2 最新版 Assembly4 0.50.8 下载地址:stoneold/FreeCAD_Assembly4 最新版 Assembly4 示例教程 下载地址:FreeCAD_Examples: Freecad Assmbly4 …

菜品上架与展示

菜品上架与展示 1、功能简介 1、实现菜品的上架 2、实现菜品的展示 2、代码展示 2.1 food类 package com.ham.pkg.ArryList;public class Food {private String name;private double price;private String desc;public Food(String name, double price, String desc) {this.…

CubeMX使用教程(3)——GPIO

在第二章我们完成了点灯仪式,这次我准备尝试把按键和灯结合起来,做一次GPIO的综合测试 实验任务为:按下按键1(B1),第1个灯(LD1)亮; 按下按键2(B2)…

Vue3.0 vue.js.devtools无法显示Pinia调试工具

之前的配置方式: app.use(createPinia()) app.mount(#app) 更新配置方式: app.use(createPinia()).mount("#app") 设置之后即可显示调试工具

25考研资料PDF汇总

资料V馊public号ZL研知己 V馊public号ZL研知己 25考研资料PDF汇总

PTA L2-015 互评成绩

学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。 输入格式&#xf…

好物周刊#44:现代终端工具

https://github.com/cunyu1943 村雨遥的好物周刊,记录每周看到的有价值的信息,主要针对计算机领域,每周五发布。 一、项目 1. Github-Hosts 通过修改 Hosts 解决国内 Github 经常抽风访问不到,每日更新。 2. 餐饮点餐商城 针对…

unity Game视图看不到贴花,但是在Scene视图能看到

解决方法:找到URP的配置文件 ,修改Quality–RederScale为1,就可以了,这是unity 的bug,2022版本以后就没有这个问题了

阿珊带你深入理解 async/await 函数

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Android Framework 通过脚本动态修改应用私有文件执行权限

你只活一次 要悦己 脚本配置 Android_source/device/sprd/***/test/test_chmod.rc service test_chmod /vendor/bin/test_chmod.shuser rootdisabledoneshoton property:sys.test_chmodtruestart test_chmodAndroid_source/device/sprd/***/test/test_chmod.sh #!/system/bin/…