现在,我可以使用psutil
获取进程的当前CPU使用率,但我想获得最近5分钟,10分钟和15分钟的CPU使用率。
答案 0 :(得分:0)
建议1 :
我没有测试过以下代码 - 仅为了说明而共享它。
使用3个线程计算/打印5,10,15分钟的CPU使用率。
根据文档使用psutil.cpu_percent(interval=0.0)
:
返回表示当前系统范围CPU利用率的浮点数 百分比...当间隔为0.0或无比较系统CPU时间时 自上次调用或模块导入后经过,立即返回...
在psutil.cpu_percent(interval = 0.0)之后,将线程置于特定时间间隔内(您希望平均使用的时间):
import os
import time
import psutil
.......
p = psutil.Process(os.getpid()) # pid of the current process
p.cpu_percent(interval=0.0)
time.sleep(300) # for 5 mins cpu usage
......
建议2 :
单个线程记录(附加到数组)cpu使用以固定间隔(每分钟),另一个线程获取值并计算平均值,即得到最后五个值并除以5,类似地最后10个值并除以10。
对于这种情况,第一个线程必须将值放入具有固定长度的队列,即15(最后15分钟cpu使用)。为此,您可以使用collections.deque
:
q = collections.deque(maxlen=15)
q.append(elem)
如果未指定maxlen或为None,则deques可能会增长为任意值 长度。否则, deque被限制为指定的最大值 长度。一旦有限长度双端队列已满,当添加新项目时, 从对端丢弃相应数量的项目。