You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写低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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:40:52