如何使用 psutil.get_cpu_percent()?

新手上路,请多包涵

如何准确使用函数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 时间,但它如何计算我在这里的功能调用?

原文由 Bharathi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 505
2 个回答

谢谢大家…我得到了查询的解决方案。

 >>> 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 使用百分比。

原文由 Bharathi 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您阅读 文档psutil.cpu_percent 将:

返回一个浮点数,表示当前系统范围内的 CPU 使用率百分比……当 interval 为 0.0 或 None 时,比较自上次调用或模块导入以来经过的系统 CPU 时间,立即返回……

我很确定那不是你想要的。

首先,如果您想知道 特定调用期间 的 CPU 使用率,您必须 (a) 在函数之前和之后调用它,或者 (b) 从与调用并行运行的另一个线程或进程调用它,并且对于与通话同时(通过传递 interval )。

其次,如果您想知道该调用使用了多少 CPU 时间,而不是该调用加上您计算机上每个程序所做的所有其他事情所使用的时间,您甚至没有调用正确的函数,所以没有让它做你想做的事情的方法。

而且在 psutil 中没有任何东西是为此而设计的。 psutil 的全部意义在于,它从“外部”角度提供有关您的系统和程序的信息。它不知道你什么时候运行了什么功能。

但是,stdlib 附带的一些东西可以执行类似的操作,例如 resource.getrusagecProfile 模块。在不知道您想要完成什么的情况下,很难确切地告诉您该做什么,但如果您阅读那些链接的文档,他们可能会给您一些想法。

原文由 abarnert 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏