基于Python制作一个解压的内存加速球
写在前面
安全管家助手什么的上总会带一个内存加速球,有关掉进程以及内存清理的功能。虽然本质上,内存清理只是个幌子实际没啥作用,但是当你深度清理之后,肉眼可见的内存下降确实很解压。不过每次都得打开安全软件才能享受解压的快感实在是有些买椟还珠了,所以就想尝试一下自己写个玩玩。
内存清理
这里我使用python来编写。
搜索了一下,我确定了两个方案,一个是通过windows自带的内存回收机制清理,另一个是通过windows提供的一个APIEmptyWorkingSet清理,下面我们就来对比一下。
windows自带的内存回收机制
通过申请大量的内存来触发windows的内存回收机制,从而清理内存。
import psutil import ctypes mem = psutil.virtual_memory() size = mem.total // 2 buffer = ctypes.create_string_buffer(size) del buffer
这里通过psutil获取到内存总数,并且通过ctypes库来创建了一个一半总数的缓冲区,随后立马删掉。
但是,这样会造成临时的卡顿,并且肉眼可见的内存上涨。而且清理的不干净。果断放弃这个方案,一点都不顺畅。
EmptyWorkingSet
EmptyWorkingSet是windows的一个API,它用来清空指定进程的内存中的工作集。将该程序所用的物理内存定义为脏页并转移到磁盘上的内存交换文件上,清空该进程占用的物理内存,当进程再次需要时会再次从外存进行加载。那么加载的过程中可能会导致临时的卡顿。
市面上的加速球大多用的都应该是这个技术
通过psutil库,以及搭配win32相关的库,实现起来也很方便
import win32api import win32con import win32process import psutil for pid in psutil.pids(): try: handle = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS, False, pid) win32process.SetProcessWorkingSetSize(handle, -1, -1) win32api.EmptyWorkingSet(handle) except Exception: continue
而经过与某管家进行对比,发现效果大差不大,他们可能做了一些内存整理的优化。
进程终止
杀死进程就更简单了,这里为了避免出问题,我只保留他们的父进程,依旧是通过psutil来实现
import psutil pid_set = set() processes = [] # 只遍历正在运行的进程 for pid in psutil.pids(): if pid in pid_set: continue try: proc = psutil.Process(pid) except psutil.NoSuchProcess: continue # 只处理父进程 proc_p = proc.parent() if proc_p is not None: proc = proc_p if proc.pid in pid_set: continue pid_set.add(proc.pid) # 生成进程信息 process_info = proc.as_dict(attrs=['pid', 'name', 'username', 'status', 'memory_info']) process.append(process_info)
而杀死进程则是通过如下代码实现,pid就是指定进程的pid
psutil.Process(pid).kill()
至此,核心功能算是搞完了
完整开发
既然是加速球,那肯定需要一个界面,这里自己随手PS画了个图,然后用PyQt5写了个界面出来(写的时候实在是恶心吐了)
最后的一个效果如下
双击便可进行内存清理
右键便可打开进程管理,在进程管理界面点击右键即可关闭
每次只会显示内存占用最多的前十五个进程,点击即杀死进程
同时为了趣味性,我还设置了单次分数和成就,当你达到100分时,即可解锁蓝屏见证者称号。(狗头)
项目地址:github.com/SSRemex/MemeoryCleaner
到此这篇关于基于Python制作一个解压的内存加速球的文章就介绍到这了,更多相关Python内存加速球内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python调用Windows API函数编写录音机和音乐播放器功能
这篇文章主要介绍了Python调用Windows API函数编写录音机和音乐播放器功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2020-01-01win7 下搭建sublime的python开发环境的配置方法
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text的主要功能包括:拼写检查,书签,完整的 Python API,Goto功能,即时项目切换,多选择,多窗口等等。2014-06-06Python Numpy 控制台完全输出ndarray的实现
这篇文章主要介绍了Python Numpy 控制台完全输出ndarray的实现方式,希望给大家做个参考,一起跟随小编过来看看吧2020-02-02pytorch 使用单个GPU与多个GPU进行训练与测试的方法
今天小编就为大家分享一篇pytorch 使用单个GPU与多个GPU进行训练与测试的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-08-08
最新评论