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

如何用Python及正则表达式检测CPU占用≥80%的进程

解决你的两个Python CPU进程检测需求

一、检测系统中是否存在CPU占用率≥80%的进程

我推荐用psutil这个跨平台的Python库来实现,它能轻松获取系统进程的各项指标,不用自己调用系统命令再解析,省心很多。

步骤:

  1. 先安装psutil:
    pip install psutil
    
  2. 编写检测代码:
    import psutil
    
    def check_high_cpu_processes(threshold=80.0):
        # 先让psutil获取一次当前状态,避免第一次返回0值
        psutil.cpu_percent(interval=0.1)
        high_cpu_processes = []
        for proc in psutil.process_iter(['pid', 'name', 'cpu_percent']):
            try:
                cpu_usage = proc.info['cpu_percent']
                if cpu_usage >= threshold:
                    high_cpu_processes.append({
                        'pid': proc.info['pid'],
                        'name': proc.info['name'],
                        'cpu_percent': cpu_usage
                    })
            except (psutil.NoSuchProcess, psutil.AccessDenied):
                # 跳过无法访问或已结束的进程
                continue
        return high_cpu_processes
    
    # 调用函数检测
    result = check_high_cpu_processes()
    if result:
        print("检测到CPU占用≥80%的进程:")
        for proc in result:
            print(f"PID: {proc['pid']}, 进程名: {proc['name']}, CPU占用率: {proc['cpu_percent']}%")
    else:
        print("未检测到CPU占用≥80%的进程")
    
    代码说明:
    • 提前调用psutil.cpu_percent(interval=0.1)是为了初始化数据,这个方法第一次调用通常返回0,第二次才能拿到真实的CPU使用率
    • 捕获NoSuchProcess和AccessDenied异常,避免因进程突然结束或权限不足导致代码崩溃
    • 返回结果是结构化的进程信息列表,方便后续进一步处理

二、从字符串变量中用正则表达式检测CPU占用≥80%的进程

根据你提供的命令输出格式,我们需要精准匹配5Sec列中数值≥80的百分比字段,避免误匹配开头的系统总CPU使用率。

正则表达式方案:

我给你两种思路,按需选择:

  1. 精准匹配5Sec列:用正向预查确保匹配的是进程行的5Sec字段,不会误抓开头的系统总CPU
    (\d+\.\d+|\d+)%(?=\s+\d+\.\d+%\s+\d+\.\d+%\s+\d+\s+.+)
    
  2. 简化匹配(不区分位置):先抓所有百分比格式的内容,再筛选数值≥80的,适合不需要严格区分字段的场景
    (\d+\.\d+|\d+)%
    

Python代码示例:

假设你的输出字符串存在output_str变量中:

import re

def check_high_cpu_from_string(output_str):
    # 用精准匹配的正则,只抓5Sec列的百分比
    pattern = re.compile(r'(\d+\.\d+|\d+)%(?=\s+\d+\.\d+%\s+\d+\.\d+%\s+\d+\s+.+)')
    matches = pattern.findall(output_str)
    # 筛选出数值≥80的结果
    high_cpu_values = [match for match in matches if float(match) >= 80.0]
    
    if high_cpu_values:
        print(f"检测到CPU占用≥80%的进程,对应CPU值为:{', '.join(high_cpu_values)}%")
        return True
    else:
        print("未检测到CPU占用≥80%的进程")
        return False

# 测试用的输出字符串(替换成你自己的变量即可)
output_str = """CPU utilization for five seconds: 81%/0%; one minute: 30%; five minutes: 26% 
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 
3 6765 291 23247 60.24% 8.07% 1.72% 3 SSH Process 
126 22753 14985 1518 4.97% 0.88% 0.43% 0 IP Input 
219 424447 390715 1086 1.84% 1.73% 1.66% 0 MMA DP TIMER 
70 263766 25673 10274 80.00% 1.0..."""

# 调用检测函数
check_high_cpu_from_string(output_str)

如果用简化匹配的思路,代码可以更短:

def check_high_cpu_simple(output_str):
    pattern = re.compile(r'(\d+\.\d+|\d+)%')
    all_cpu_values = [float(match) for match in pattern.findall(output_str)]
    if any(val >= 80 for val in all_cpu_values):
        print("检测到CPU占用≥80%的进程")
        return True
    else:
        print("未检测到CPU占用≥80%的进程")
        return False

内容的提问来源于stack exchange,提问作者StackP

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:03:47