python - 如何通过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>
解决方案
我不确定您是否试图在执行 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()
实际上是您想要的,除非被问到,否则我不会详细说明。
推荐阅读
- openedge - 如何理解 client.mon 文件中提到的 Int-Proc 条目?
- c++ - Xerces:如何创建 DOM 文档
- primeng - PrimeNg (7.x) / P-TREE / Filter / 双滚动条
- html - 为什么与浏览网站相比,python requests.get() 检索到不同的图像 src
- java - 命令行上的输入重定向到 java 程序不适用于 Console 类
- python - 根据某些条件修改字典列表中的键
- javascript - Javascrpt:在获取请求中发送获取请求
- javascript - Javascript:将数组转换为对象
- c++ - 如何更改我的程序以获得所需的输出?
- php - 用 PHP 调用 JSON 文件,但无法以我想要的方式回显