无论间隔值PYTHON如何,percent(interval = None)始终返回0

无论间隔值如何,代码始终返回0.0值。

import psutil
p = psutil.Process()
print p.cpu_percent(interval=1)
print p.cpu_percent(interval=None)

记录此行为:

当间隔为0.0None将处理时间与自上次调用后经过的系统CPU时间进行比较,并立即返回。 这意味着这是第一次被称为它将返回一个你应该忽略的毫无意义的0.0值。 在这种情况下,建议精确度是这个功能在呼叫间隔至少0.1秒后第二次被调用。

还有一个警告是针对单个呼叫使用interval=None

警告:第一次使用interval = 0.0None调用此函数时,它将返回一个无意义的0.0值,您应该忽略它。

如果使用interval=None ,请确保与之前的调用相比,调用.cpu_percent

p = psutil.Process(pid=pid)
p.cpu_percent(interval=None)
for i in range(100):
    usage = p.cpu_percent(interval=None)
    # do other things

代替:

for i in range(100):
    p = psutil.Process(pid=pid)
    p.cpu_percent(interval=None)
    # do other things

从我自己的代码中可以发现:

cpu = psutil.cpu_times_percent(interval=0.4, percpu=False)

Process对象的cpu是可变的。 我为你做了一些测试。

for i in range(10):
    p = psutil.Process(3301)
    print p.cpu_percent(interval=0.1)

结果: 9.9 0.0 0.0 0.0 0.0 9.9 0.0 9.9 0.0 0.0

所以如果你想获得一个Process对象的CPU百分比,你可以在一定的时间内取平均值。

test_list = []
for i in range(10):
    p = psutil.Process(6601)
    p_cpu = p.cpu_percent(interval=0.1)
    test_list.append(p_cpu)
print float(sum(test_list))/len(test_list)

结果: 1.98

更多信息在图片中

链接地址: http://www.djcxy.com/p/80131.html

上一篇: percent(interval=None) always returns 0 regardless of interval value PYTHON

下一篇: How do I get copy