【问题标题】:How to check cpu consumption by a python script如何通过python脚本检查cpu消耗
【发布时间】:2018-06-01 16:16:26
【问题描述】:

我已经实现了卡尔曼滤波器。我想知道我的脚本消耗了多少 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 消耗的能量 ​

【问题讨论】:

  • 您能否编辑您的问题以更清楚地了解您想要获取的信息?对于一个模糊的问题,我们真正能做的就是向你指出不同的模糊方向,并解释为什么你可能会根据你想要的东西,在某种程度上走上正轨,但又偏离了轨道,或者朝着完全错误的方向前进。
  • @abarnert 我已经编辑了这个问题。请再次检查

标签: python psutil


【解决方案1】:

我不确定您是要在执行该#kalman code 期间尝试找到峰值 CPU 使用率,还是平均值、总数或其他?

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


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

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

或者您可以在程序外部使用time 命令,方法是运行time python myscript.py 而不是python myscript.py


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

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

【讨论】:

  • 如何打印?打印(os.times)?
  • @pinkpuffles 你必须调用函数并打印结果,而不是打印函数本身,所以print(os.times())
  • 它给出了消耗的时间。我在寻找能量。虽然被赋予了力量,但它可以被找到
  • @pinkpuffles 该信息基本上不存在于任何地方。您可以通过测量特定服务器机器的能量并根据时间和曲线拟合对其进行校准,从所花费的 CPU 时间中获得粗略的近似值,这是(我最近检查过——几年前……)CDN 和其他一些大规模的- 规模主机最终收取消费成本。
  • @pinkpuffles 你不能做得比启发式更好的原因是现代 CPU 具有速度提升、智能空闲、可变 TDP、启发式驱动的 SDP、超线程等功能,所以完成一定量的工作所需的能量很大程度上取决于上下文。
猜你喜欢
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 2016-05-23
  • 1970-01-01
相关资源
最近更新 更多