如何编写低CPU占用的Python脚本终止指定进程?
实现终止指定进程的Python脚本
嘿,我懂你想要的是一个能自动终止黑名单里进程的Python工具,基于你提到的思路,我把代码补全并做了一些健壮性优化,来看看:
import psutil def terminate_target_processes(): # 定义需要终止的进程黑名单,注意Windows下带.exe后缀,Linux/macOS不需要 black_list = ["SkypeHost.exe", "Music.UI.exe", "SearchUI.exe", "Video.UI.exe"] # 遍历当前所有运行的进程 for proc in psutil.process_iter(['pid', 'name']): try: # 统一转小写避免大小写匹配误差 proc_name = proc.info['name'].lower() target_names = [name.lower() for name in black_list] if proc_name in target_names: print(f"正在终止进程: {proc.info['name']} (PID: {proc.info['pid']})") # 先尝试优雅终止,给进程清理资源的机会 proc.terminate() # 超时3秒未终止则强制杀死 if not proc.wait(timeout=3): proc.kill() except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): # 处理进程已结束、权限不足、僵尸进程等异常,避免脚本崩溃 continue if __name__ == "__main__": terminate_target_processes()
关键细节说明:
- 大小写兼容处理:把进程名和黑名单都转成小写,避免因为系统显示的进程名大小写不一致导致匹配失败
- 优雅终止优先:先用
terminate()发送正常终止信号,给进程留时间清理资源,超时未结束再用kill()强制杀死 - 异常防护:捕获进程操作中常见的异常情况,比如遍历过程中进程已退出、没有权限终止系统进程等,保证脚本能正常跑完所有进程
- 高效获取信息:通过
psutil.process_iter()指定只获取pid和name,比获取全部进程信息更节省资源
注意事项:
- 先确保安装了psutil库:没装的话运行
pip install psutil即可 - 部分系统核心进程需要管理员/root权限才能终止,Windows下右键以管理员身份运行脚本,Linux/macOS则加
sudo执行 - 黑名单里的进程名要准确,建议先运行psutil列出当前进程确认名称,避免写错导致匹配失败
内容的提问来源于stack exchange,提问作者MrEyebr0w5
相关产品推荐
相关产品推荐

