Python如何基于指定CPU核心的使用率编写条件判断语句
解决方案
核心原理
psutil.cpu_percent(percpu=True, interval=1)返回的结果是一个按核心编号顺序排列的列表,列表的索引值与核心编号完全对应,你只需要先把这个返回结果存储为变量,就可以通过索引直接获取任意指定编号核心的使用率,灵活适配各种判断场景。
适配你需求的完整代码示例
import psutil print("="*40, "CPU Info", "="*40) print("Physical cores:", psutil.cpu_count(logical=False)) print("Total cores:", psutil.cpu_count(logical=True)) # 提前存储所有核心的使用率,索引对应核心编号 core_usages = psutil.cpu_percent(percpu=True, interval=1) print("CPU Usage Per Core:") for i, percentage in enumerate(core_usages): print(f"Core {i}: {percentage}%") print(f"Total CPU Usage: {psutil.cpu_percent()}%") # 自定义配置区,后续改需求直接修改这里即可 target_cores = [0, 1, 2, 3] # 要检测的核心编号列表 usage_threshold = 50 # 使用率阈值 # 判断逻辑:任意目标核心超过阈值就触发操作 for core_id in target_cores: if core_usages[core_id] > usage_threshold: # 这里替换为你自己的自定义操作代码即可 print(f"核心{core_id}使用率{core_usages[core_id]}%超出阈值,触发操作") # 若只要有一个核心触发就不需要继续检测,保留下面的break,否则删除 break
其他场景适配方法
你只需要修改target_cores的取值就可以适配不同的检测需求:
- 检测全部核心:
target_cores = range(len(core_usages)) - 检测指定零散核心(比如2、5、7号):
target_cores = [2,5,7] - 需要所有目标核心都超过阈值才触发:把判断逻辑替换为
if all(core_usages[core_id] > usage_threshold for core_id in target_cores): # 你的自定义操作
注意事项
psutil.cpu_percent的interval参数控制采样时长,数值越大返回的使用率结果越准确,若设置为0会返回上一次调用的统计结果,首次调用会返回0,实时检测场景建议保留interval≥1的设置。
内容的提问来源于stack exchange,提问作者Stpete111
相关产品推荐
相关产品推荐

