无论间隔值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.0
或None
将处理时间与自上次调用后经过的系统CPU时间进行比较,并立即返回。 这意味着这是第一次被称为它将返回一个你应该忽略的毫无意义的0.0
值。 在这种情况下,建议精确度是这个功能在呼叫间隔至少0.1
秒后第二次被调用。
还有一个警告是针对单个呼叫使用interval=None
:
警告:第一次使用interval = 0.0
或None
调用此函数时,它将返回一个无意义的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
上一篇: percent(interval=None) always returns 0 regardless of interval value PYTHON
下一篇: How do I get copy