首页 > 解决方案 > 如何通过python脚本检查cpu消耗

问题描述

我已经实现了卡尔曼滤波器。我想知道我的脚本消耗了多少 CPU 能量。我检查了 Stackoverflow 上的其他帖子,并按照他们下载了 psutil 库。现在,我不知道在哪里放置陈述以获得正确答案。这是我的代码:

if __name__ == "__main__":
   #kalman code
    pid = os.getpid()
    py = psutil.Process(pid)
    current_process = psutil.Process();
    memoryUse = py.memory_info()[0]/2.**30  # memory use in GB...I think
    print('memory use:', memoryUse)
    print(current_process.cpu_percent())
    print(psutil.virtual_memory()) #  physical memory usage

请告知我是否朝着正确的方向前进。上面的代码产生了以下结果。

('memory use:', 0.1001129150390625)
0.0
svmem(total=6123679744, available=4229349376, percent=30.9, used=1334358016, free=3152703488, active=1790803968, inactive=956125184, buffers=82894848, cached=1553723392, shared=289931264, slab=132927488)

编辑:目标:找出运行此脚本时 CPU 消耗的能量​</p>

标签: pythonpsutil

解决方案


我不确定您是否试图在执行 that 期间找到峰值 CPU 使用率、#kalman code平均值、总数或其他内容?

但是你不能cpu_percent()在完成后通过调用来获得任何这些。您只是在测量调用的 CPU 使用率cpu_percent()


其中一些,你可以通过调用来获得cpu_times()。这将告诉您花费了多少秒做各种事情,包括总“用户 CPU 时间”和“系统 CPU 时间”。文档准确地指出了您在每个平台上获得的值,以及它们的含义。

事实上,如果这就是你想要的(包括只需要这两个值),你甚至不需要psutils,你可以os.times()在标准库中使用。

或者,您可以time通过运行time python myscript.py而不是python myscript.py.


对于其他人,您需要cpu_percent 在代码运行时调用。一个简单的解决方案是运行一个后台进程,multiprocessing或者concurrent.futures只调用cpu_percent你的主进程。为了得到任何有用的东西,子进程可能需要定期调用它,聚合结果(例如,找到最大值),直到它被告知停止,此时它可以返回聚合。

由于这写起来并不简单,而且在不知道您对多处理有多熟悉的情况下绝对不容易解释,而且很有可能cpu_times()实际上是您想要的,除非被问到,否则我不会详细说明。


推荐阅读