如何正确使用get_cpu_percent()函数?
我的代码是:
SDKTestSuite.DijSDK_CalculateFps(int(timeForFPS),int(index),cameraName)
cpuUsage = process.get_cpu_percent()
这里我调用一个名为SDKTestSuite.DijSDK_CalculateFps()
的函数,我调用get_cpu_percent()
来获取此调用的CPU使用率。我正在为不同的输入调用此函数,结果有时CPU使用率为0.0%
,这是不期望的。
那么我是否以正确的方式使用get_cpu_percent
?如何准确使用这个get_cpu_percent
函数?这里是否有任何间隔参数变化?
在这个函数的实际定义中,它只是在给定的时间间隔内休眠并比较CPU时间,但是它如何在这里计算我的函数调用?
答案 0 :(得分:7)
如果您阅读the docs,psutil.cpu_percent
将:
以百分比形式返回表示当前系统范围CPU利用率的浮点数...当interval为0.0或None时,比较自上次调用或模块导入后经过的系统CPU时间,立即返回...
我很确定这不是你想要的。
首先,如果您想知道特定呼叫期间的CPU使用率 ,您必须(a)在功能之前和之后调用它,或者(b)从另一个线程调用它或进程与调用并行运行,与调用同时运行(通过传递interval
)。
其次,如果您想知道该呼叫使用了多少CPU时间,而不是该呼叫加上计算机上每个程序正在使用的其他所有内容,您甚至都没有调用正确的功能,所以没有办法让它做你想做的事。
psutil
中的任何内容都没有设计用来做到这一点。 psutil
的重点在于它提供了有关您的系统的信息,以及从“外部”角度提供的有关您的程序的信息。它对你在什么时候运行的函数一无所知。
但是,stdlib附带的东西可以执行类似的操作,例如resource.getrusage
或cProfile
模块。如果不确切地知道你要完成什么,很难告诉你到底要做什么,但也许如果你阅读那些链接的文档,他们会给你一些想法。
答案 1 :(得分:2)
os.getpid
- 这将返回运行此代码的程序的PID。例如,当您在pythonw.exe上运行它时,它将返回pythonw.exe的PID。
因此p.get_cpu_percent
将返回该进程的CPU使用情况。
如果您想要系统范围的CPU,psutil.cpu_percent
可以完成这项工作。
希望这有帮助,干杯!
答案 2 :(得分:2)
你需要psutil
pip install psutil
然后
import psutil,os
p = psutil.Process(os.getpid())
print(p.cpu_percent())
答案 3 :(得分:0)
谢谢大家...... 我得到了我的查询解决方案。
>>> p = psutil.Process(os.getpid())
>>> # blocking
>>> p.get_cpu_percent(interval=1)
2.0
>>> # non-blocking (percentage since last call)
>>> p.get_cpu_percent(interval=0)
2.9
这里间隔值非常重要。最后的调用将为我的实际函数调用提供cpu的百分比用法。