终端运行Python脚本获取单CPU使用率始终为0的问题
问题解答
这是因为psutil.cpu_percent()的工作机制导致的:它需要对比两次CPU状态采样才能计算出使用率。当你在终端第一次运行脚本时,psutil.cpu_percent(percpu=True)是程序启动后的第一次采样,没有历史基准数据,所以会返回全0的结果。
而Jupyter Notebook环境中,大概率你之前已经执行过psutil相关的代码(哪怕是测试代码),或者Notebook的内核在后台已经完成过CPU状态采样,所以这次调用能拿到有效的对比数据,自然输出正确的使用率。
修复方案
有两种简单的修复方式:
方式1:先调用一次丢弃结果,再获取有效数据
import psutil # 第一次调用获取基准数据,丢弃结果 psutil.cpu_percent(percpu=True) # 第二次调用获取真实使用率 values = psutil.cpu_percent(percpu=True) print(f"{'CPU':>3} {'CPU%':>6}") print(10*'=') for cpu in range(1, psutil.cpu_count()+1): print(f"{cpu:<3} {values[cpu-1]:>5}%")
方式2:设置interval参数让采样等待一段时间
interval=N会让函数等待N秒,这段时间内完成两次采样并计算使用率:
import psutil # 等待1秒后返回真实使用率 values = psutil.cpu_percent(percpu=True, interval=1) print(f"{'CPU':>3} {'CPU%':>6}") print(10*'=') for cpu in range(1, psutil.cpu_count()+1): print(f"{cpu:<3} {values[cpu-1]:>5}%")
两种方式都能解决终端运行时输出全0的问题,你可以根据需求选择:方式1几乎无延迟但依赖两次调用,方式2会等待指定时间但代码更简洁。
内容的提问来源于stack exchange,提问作者PeeteKeesel
相关产品推荐
相关产品推荐

