是否可以获得任何进程的最后5分钟的CPU使用率?

时间:2017-04-10 12:00:03

标签: python psutil

现在,我可以使用psutil获取进程的当前CPU使用率,但我想获得最近5分钟,10分钟和15分钟的CPU使用率。

1 个答案:

答案 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被限制为指定的最大值   长度。一旦有限长度双端队列已满,当添加新项目时,   从对端丢弃相应数量的项目