python实现windows内存看门狗程序(带GUI界面)
2024-01-07 18:55:37
python实现windows内存看门狗程序(带GUI界面)
效果图
1、程序核心
看门狗程序核心:
1、运行特定程序任务进程
2、监控任务管理器上的内存使用率
3、如果超过阈值则关闭该特定程序进程
4、重新开启该特定程序
5、重复过程2持续监控
2、程序流程
1、先编写UI界面,并转成py文件
2、实现具体的功能:获取当前内存,设置内存阈值,设置运行时间、获取目标程序路径、名称、开启监控、监控日志
3、使用nuitka打包成exe文件
3、核心代码
# -*- coding: utf-8 -*-
"""
@contact: 微信 1257309054
@file: watchDogMain.py
@time: 2024/1/6 20:40
@author: LDC
"""
def run(self):
'''
监控程序
'''
while 1:
self.qmut.lock()
if not self.window.is_run:
break
self.qmut.unlock()
time.sleep(6) # 休眠时间
self.window.get_memory() # 获取当前内存
msg = '正在监控【{}】,当前内存:{},内存阈值:{}'.format(self.window.file_name_edit_value,
self.window.current_memory_edit_value,
self.window.memory_threshold_edit_value
)
self._signal_monitor.emit(json.dumps({'log': msg})) # 发送信号给槽函数
try:
if self.window.current_memory_edit_value > self.window.memory_threshold_edit_value:
msg = '内存{}%超过{}%,关闭程序'.format(self.window.current_memory_edit_value,
self.window.memory_threshold_edit_value
)
self._signal_monitor.emit(json.dumps({'log': msg})) # 发送信号给槽函数
while self.is_process_running(self.window.file_name_edit_value):
os.popen('taskkill /f /im {}'.format(self.window.file_name_edit_value)) # 关闭程序
time.sleep(2)
time.sleep(5)
while 1:
if self.is_process_running(self.window.file_name_edit_value):
break
msg = '开始重启【{}】'.format(self.window.file_name_edit_value)
self._signal_monitor.emit(json.dumps({'log': msg})) # 发送信号给槽函数
# 开启进程启动程序
p_array_main = Process(target=run,
name='monitor_run',
args=(self.window.file_path_edit_value, self.window.file_name_edit_value)
)
p_array_main.daemon = False # 设为【非守护进程】daemon=True 随主进程的结束而结束
p_array_main.start()
time.sleep(5)
if self.is_process_running(self.window.file_name_edit_value):
msg = '重启【{}】成功'.format(self.window.file_name_edit_value)
self._signal_monitor.emit(json.dumps({'log': msg})) # 发送信号给槽函数
except Exception as e:
self._signal_monitor.emit(json.dumps({'log': '出错了,{}'.format(e)})) # 发送信号给槽函数
4、打包
python -m nuitka --standalone --windows-disable-console --onefile --mingw64 --show-memory --show-progress --nofollow-import-to=pillow,PIL,,pyqt5 --enable-plugin=pyqt5 --output-dir=nuitka_out watchDogMain.py
文章来源:https://blog.csdn.net/lm_is_dc/article/details/135441130
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!