python实现windows内存看门狗程序(带GUI界面)

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(5)
        self._signal_monitor.emit(json.dumps({'get_memory': 'get_memory'}))  # 发送信号给槽函数
        time.sleep(5)
        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(50)
                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}))  # 发送信号给槽函数
                    break
            time.sleep(120)  # 休眠时间
        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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东木月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值