当前位置: 首页 > news >正文

python脚本实现windows电脑内存监控内存清理(类似rammap清空工作集功能)

import ctypes
import psutil
import time
import sys
import os
from datetime import datetime
import pyautogui# 检查管理员权限
def is_admin():try:return ctypes.windll.shell32.IsUserAnAdmin()except:return False# 内存清理核心功能
def cleanup_memory(aggressiveness=0.5):try:# 获取所有进程processes = psutil.process_iter()# 系统关键进程白名单system_processes = {"System Idle Process", "System", "svchost.exe","wininit.exe", "csrss.exe", "lsass.exe"}# 初始化WinAPIPROCESS_QUERY_INFORMATION = 0x0400PROCESS_SET_QUOTA = 0x0100# 加载 psapi.dllpsapi = ctypes.WinDLL('psapi', use_last_error=True)EmptyWorkingSet = psapi.EmptyWorkingSetEmptyWorkingSet.argtypes = [ctypes.c_void_p]cleaned = 0for proc in processes:try:# 获取进程信息pid = proc.pidname = proc.name()# 跳过系统关键进程和自身if name in system_processes or pid == os.getpid():continue# 尝试获取进程句柄hProcess = ctypes.windll.kernel32.OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_SET_QUOTA,False,pid)if hProcess:# 尝试清空工作集if EmptyWorkingSet(hProcess):cleaned += 1ctypes.windll.kernel32.CloseHandle(hProcess)except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):continuereturn cleanedexcept Exception as e:print(f"清理过程中发生错误: {str(e)}")return 0# 内存监控
def memory_monitor(threshold=30, interval=60, aggressiveness=0.5):print("内存监控已启动...")try:while True:mem = psutil.virtual_memory()used_percent = mem.percentprint(f"--------------------\n{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} \n当前内存使用率: {used_percent}%(自动清理阈值:{threshold}%)")if used_percent > threshold:# print("开始清理内存...")cleaned = cleanup_memory(aggressiveness)print(f"已清理 {cleaned} 个进程的工作集内存...")# 清理后再次检查time.sleep(5)  # 预留清理过程的时间new_mem = psutil.virtual_memory()print(f"清理后内存使用率: {new_mem.percent}%")print(f"累计释放内存: {(mem.used - new_mem.used) // 1024 // 1024} MB")time.sleep(interval)except KeyboardInterrupt:print("\n监控已停止")if __name__ == "__main__":if not is_admin():print("需要管理员权限运行!")ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1)sys.exit()# 配置参数config = {'threshold': 30,  # 触发清理的内存使用率阈值(百分比)'interval': 600,  # 检查间隔(秒)'aggressiveness': 0.3  # 清理强度(0.1 ~ 1)}# 内存使用率阈值(百分比)try:config['threshold'] = int(pyautogui.prompt('请输入触发清理的内存使用率阈值-(整数)-(默认30%)!'))except:config['threshold'] = 30print(f"初始参数:\n--自动清理阈值:{config['threshold']}%")# 检查间隔(秒)try:config['interval'] = int(pyautogui.prompt('请设置检查间隔(秒)-(整数)-(默认600秒)!'))except:config['interval'] = 600print(f"--检查间隔:{config['interval']}秒")# 清理强度(0.1~1.0)try:config['aggressiveness'] = float(pyautogui.prompt('请设置清理强度(0.1 ~ 1)-(默认0.3)!'))except:config['aggressiveness'] = 0.3print(f"--清理强度(0.1 ~ 1):{config['aggressiveness']}")# 执行内存监控try:memory_monitor(**config)except Exception as e:print(f"程序发生错误: {str(e)}")

相关文章:

python脚本实现windows电脑内存监控内存清理(类似rammap清空工作集功能)

import ctypes import psutil import time import sys import os from datetime import datetime import pyautogui# 检查管理员权限 def is_admin():try:return ctypes.windll.shell32.IsUserAnAdmin()except:return False# 内存清理核心功能 def cleanup_memory(aggressivene…...

【狂热算法篇】并查集:探秘图论中的 “连通神器”,解锁动态连通性的神秘力量

嘿,朋友们!喜欢这个并查集的讲解吗 记得点个关注哦,让我们一起探索算法的奥秘,别忘了一键三连,你的支持是我最大的动力! 欢迎拜访:羑悻的小杀马特.-CSDN博客 本篇主题:深度剖析并查…...

SpringBoot中实现动态数据源切换

SpringBoot中实现动态数据源切换 文章目录 SpringBoot中实现动态数据源切换SpringBoot中实现动态数据源切换基础知识1. 什么是数据源?2. 动态数据源切换的概念3. Spring Boot 中的默认数据源配置4. 动态数据源的挑战5. Spring 中的数据源切换方式 设计思路1. 明确应…...

数据结构及排序算法

数据结构 线性结构 ◆线性结构:每个元素最多只有一个出度和一个入度,表现为一条线状。线性表按存储方式分为顺序表和链表。 存储结构: ◆顺序存储:用一组地址连续的存储单元依次存储线性表中的数据元素,使得逻辑上相邻的元素物理上也相邻。 ◆链式存储:存储各数据元素的结点…...

Python基础-元组tuple的学习

在 Python 中,元组(tuple)是一种不可变的序列类型,允许存储不同类型的元素。元组非常类似于列表(list),但与列表不同的是,元组一旦创建,就不能修改其内容。 1 元组的创建…...

【手写公式识别】MEMix: Improving HMER with Diverse Formula Structure Augmentation 论文阅读

发表于:ICME 2024 原文链接:https://ieeexplore.ieee.org/document/10687521 源码:无 Abstract 手写数学表达式识别(HMER)旨在将数学表达式(MEs)的图像转换为相应的LaTeX序列。然而&#xff0…...

使用deepseek写一个飞机大战游戏

说明: 安装pygame:在运行代码之前,需要先安装 pygame 库。可以通过以下命令安装: pip install pygame图像文件:需要将玩家、敌人和子弹的图像文件(player.png, enemy.png, bullet.png)放在与脚本…...

用Kibana实现Elasticsearch索引的增删改查:实战指南

在大数据时代,Elasticsearch(简称 ES)和 Kibana 作为强大的数据搜索与可视化工具,受到了众多开发者的青睐。Kibana 提供了一个直观的界面,可以方便地对 Elasticsearch 中的数据进行操作。本文将详细介绍如何使用 Kiban…...

C# 封送和远程编程介绍

.NET学习资料 .NET学习资料 .NET学习资料 在 C# 编程领域中,封送(Marshaling)和远程编程(Remote Programming)是两个极为重要的概念,它们为开发者提供了与不同环境、不同进程或不同机器上的代码进行交互的…...

MybatisPlus较全常用复杂查询引例(limit、orderby、groupby、having、like...)

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。以下是 MyBatis-Plus 中常用复杂查询(如 LIMIT、ORDER BY、GROUP BY、HAVING、LIKE 等)的引例: 1. 环境准备…...

02.07 TCP服务器与客户端的搭建

一.思维导图 二.使用动态协议包实现服务器与客户端 1. 协议包的结构定义 首先,是协议包的结构定义。在两段代码中,pack_t结构体都被用来表示协议包: typedef struct Pack {int size; // 记录整个协议包的实际大小enum Type type; …...

Jenkins数据备份到windows FTP服务器

文章目录 背景1. 安装配置 FileZilla Server(Windows)1.1 下载并安装 FileZilla Server1.2 配置 FTP 用户和共享目录 2. 安装并配置 FTP 客户端(CentOS)2.1 在 CentOS 安装 lftp 3. 编写 Jenkins 备份脚本3.1 赋予执行权限3.2 测试…...

【R语言】卡方检验

一、定义 卡方检验是用来检验样本观测次数与理论或总体次数之间差异性的推断性统计方法,其原理是比较观测值与理论值之间的差异。两者之间的差异越小,检验的结果越不容易达到显著水平;反之,检验结果越可能达到显著水平。 二、用…...

ASP.NET Core托管服务

目录 托管服务的异常问题 托管服务中使用DI 托管服务案例:数据的定时导出 场景,代码运行在后台。比如服务器启动的时候在后台预先加载数据到缓存,每天凌晨3点把数据导出到备份数据库,每隔5秒钟在两张表之间同步一次数据。托管服…...

HarmonyOS 5.0应用开发——全局自定义弹出框openCustomDialog

【高心星出品】 文章目录 全局自定义弹出框openCustomDialog案例开发步骤完整代码 全局自定义弹出框openCustomDialog CustomDialog是自定义弹出框,可用于广告、中奖、警告、软件更新等与用户交互响应操作。开发者可以通过CustomDialogController类显示自定义弹出框…...

如何在C++ QT 程序中集成cef3开源浏览器组件去显示网页?

文章目录 1. **准备工作**1.1 下载CEF31.2 配置Qt项目2. **集成CEF3到Qt窗口**2.1 创建Qt窗口容器2.2 初始化CEF33. **处理CEF3消息循环**4. **处理多进程架构**5. **完整代码示例**`main.cpp`6. **常见问题**6.1 黑屏问题6.2 窗口嵌入失败6.3 多进程调试7.**Github源码参考**8…...

深入讲解MyBatis

1. MyBatis 的背景和优势 背景:在 Java 开发中,传统的 JDBC 操作数据库代码繁琐,需要手动管理数据库连接、编写 SQL 语句、处理结果集等,开发效率低且容易出错。MyBatis 应运而生,它通过将 SQL 语句与 Java 代码分离&a…...

使用matlab 对传递函数分析bode图和阶跃函数

如果已知一个系统的传递函数,想看一下bode图,可以通过simulink 建模,但是simulink运行起来相对比较慢,我一般都是直接通过matlab 的m语言写脚本实现。可以快速的获得结果 如 我们有一个一阶低通传递函数 syswn/(swn) 在matlab中…...

2025牛客寒假算法基础集训营5(补题)

C 小L的位运算 显然,如果两次反置的价格小于等于交换的价格,那么直接全部反置就好了。 反之,由于交换一定低于两次反置,我们尽可能用交换来消去不正确的位置。不正确的位置类型只有00,01,10,11&…...

FaceFusion如何设置公开链接和端口

有时候我们想在局域网内的其他设备上使用 FaceFusion,这时候需要设置公开链接和端口。 当你运行 FaceFusion 的时候,会发现有这样的一段提示: To create a public link, set shareTrue in launch().但是这个提示是错的,如果你查…...

新手必看:5分钟学会用Visio绘制PAD图和N-S图(附实例解析)

零基础掌握Visio绘制PAD图与N-S图的实战指南 在软件设计领域,可视化工具的重要性不言而喻。对于刚入门的开发者来说,掌握如何将抽象的逻辑思维转化为直观的图表是一项必备技能。Visio作为微软旗下的专业绘图工具,以其友好的界面和强大的功能&…...

专注核心创新:用快马AI生成openclaw101开发效率工具链

在开发机械臂控制相关的项目时,我发现很多时间都花在了重复造轮子上。特别是做openclaw101这类机械爪的仿真或实体开发时,每次都要从零开始写轨迹规划、数据滤波这些基础功能。最近尝试用InsCode(快马)平台整理了一套工具链,效率提升非常明显…...

医用擦拭纸选购指南:看懂这五大认证,避开医疗耗材采购“隐形坑

# 医用擦拭纸选购指南:看懂这五大认证,避开医疗耗材采购“隐形坑”> 在医疗领域,每一片看似普通的擦拭纸,都直接关系到诊疗安全、院感控制和患者健康。对于医疗器械经销商、医院后勤管理者而言,选择供应商时最核心的…...

FastAdmin框架旧版本踩坑记:手把手教你修复那个能读任意文件的CVE-2024-7928漏洞

FastAdmin框架安全实战:深度解析CVE-2024-7928漏洞修复与防御策略 当安全扫描报告突然标红显示"FastAdmin框架存在任意文件读取漏洞(CVE-2024-7928)"时,作为项目负责人的你可能会瞬间心跳加速。这个看似简单的漏洞编号背…...

企业级后台快速开发解决方案:Element-UI Admin全指南

企业级后台快速开发解决方案:Element-UI Admin全指南 【免费下载链接】element-ui-admin 基于 element-ui 的单页面后台管理项目模版 项目地址: https://gitcode.com/gh_mirrors/el/element-ui-admin Element-UI Admin是一款基于Element-UI组件库的单页面后台…...

腾讯云/阿里云服务器上,用娃娃一键端30分钟搞定DNF私服(附端口安全组避坑指南)

腾讯云/阿里云30分钟极速部署DNF私服全攻略:从安全组配置到五国启动 最近在游戏开发者社区里,不少朋友都在讨论如何在云服务器上快速搭建DNF私服体验服。作为一名长期混迹于各类游戏私服搭建的老玩家,我发现大多数教程要么过于专业化&#xf…...

阿里通义Qwen3-Coder 多场景集成指南

1. Qwen3-Coder 核心能力与适用场景 第一次接触阿里通义Qwen3-Coder时,最让我惊讶的是它对代码上下文的理解深度。记得有次我随手输入"写个带缓存的斐波那契函数",它不仅生成了正确的Python实现,还主动添加了LRU缓存装饰器的使用说…...

UE5开发者必备:10个免费3D模型资源网站推荐(含避坑指南)

UE5开发者必备:10个免费3D模型资源网站深度评测与实战指南 当你深夜盯着UE5编辑器里那个孤零零的默认立方体发呆时,是否也经历过这种绝望?作为经历过上百个原型项目的老司机,我深刻理解优质3D资源对开发效率的致命影响。市面上90…...

揭秘BongoCat:桌面上的数字伙伴,重新定义人机交互新体验

揭秘BongoCat:桌面上的数字伙伴,重新定义人机交互新体验 【免费下载链接】BongoCat 让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作,每一次输入都充满趣味与活力! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat…...

RTX 4060笔记本也能玩转AI绘画?Nunchaku FLUX.1-dev量化版亲测体验报告

RTX 4060笔记本也能玩转AI绘画?Nunchaku FLUX.1-dev量化版亲测体验报告 1. 开箱即用的AI绘画体验 作为一名长期使用中端显卡的AI爱好者,当我第一次听说Nunchaku FLUX.1-dev量化版可以在RTX 4060笔记本上运行时,内心充满了怀疑。毕竟&#x…...