python - 获取一个 python 实例的总内存和 cpu 使用率

标签 python tensorflow keras psutil

我正在使用 keras 来制作和测试不同类型的神经网络,并且需要数据来比较它们。我需要有关训练和测试期间使用的 cpu 和内存的数据。这是在 python 中,当我环顾四周时,我发现了很多关于 psutil 的建议。然而,我所看到的一切似乎都捕获了当前的用法。

当前的使用情况是什么?比如那个特定时刻使用的内存量?我如何使用它来获取整个程序使用的总 cpu 和内存,或者至少获取 NN 正在训练和测试的代码部分。感谢您的帮助!

最佳答案

psutil 是收集此类信息的好建议。如果将此代码合并到现有的 keras 代码中,则可以在调用 cpu_times() 方法时收集有关进程的 cpu 使用情况的信息

import psutil

process = psutil.Process()
print(process.cpu_times())

cpu_times()返回值的含义解释here .它是累积的,因此如果您想知道您的 keras 代码总共使用了多少 CPU 时间,只需在退出 python 脚本之前运行它即可。

要获取进程的内存使用信息,在调用 memory_info() 的特定时间,您可以在我们之前声明的同一 process 对象上运行它

print(process.memory_info())

cpu 和内存结果的确切含义取决于您使用的平台。内存信息结构解释here

一个更全面的示例展示了如何使用 Advanced Python Scheduler在运行 keras 训练时在后台进行 cpu 和内存测量

import psutil

import time
import os

from apscheduler.schedulers.background import BackgroundScheduler

process = psutil.Process()

def get_info():
    print(process.cpu_times(), process.memory_info())

if __name__ == '__main__':
    scheduler = BackgroundScheduler()
    scheduler.add_job(get_info, 'interval', seconds=3)
    scheduler.start()

    # run the code you want to measure here
    # replace this nonsense loop
    now = time.time()
    finish = now + 60

    while time.time() < finish:
        print("Some progress message: {}".format(time.time()))
        time.sleep(10)

关于python - 获取一个 python 实例的总内存和 cpu 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55619581/

相关文章:

python - 类变量的 Getter 或 Property 函数

python - 单个单词的翻译,考虑上下文,使用计算机语言处理工具

tensorflow - 使用 albumentations 增强 keras 中的数据

python-3.x - Early Stopping,模型经历了多少个epoch?

python - 如何保存和重复使用 keras 模型的所有设置?

类工厂/选择器的 python rtype 文档字符串/重组文本

python - 模拟导入失败

python - 裁剪图像为3D阵列

tensorflow - Keras 中的 KeyError : 'val_acc' on printing history. history.keys()

machine-learning - 深度学习是否不擅长在训练范围之外拟合简单的非线性函数(外推)?