我正在使用keras制作和测试不同类型的神经网络,需要数据进行比较。我需要有关培训和测试期间使用的CPU和内存的数据。这是在python中,当我环顾四周时,我发现了很多关于psutil的建议。但是我所看到的一切似乎都抓住了当前的用法。
当前用法是什么?喜欢那个特定时刻使用的内存量吗?我如何使用它来获取整个程序或至少是NN正在训练和测试的部分代码所使用的总cpu和内存。感谢您的帮助!
答案 0 :(得分:0)
psutil是收集此类信息的好建议。如果将此代码合并到现有的keras代码中,则可以在调用cpu_times()方法时收集有关进程的cpu使用情况的信息
import psutil
process = psutil.Process()
print(process.cpu_times())
由here解释cpu_times()返回的值的含义。它是累积的,所以如果您想知道您的keras代码总共使用了多少CPU时间,只需在退出python脚本之前运行它即可。
要获取进程的内存使用情况信息,在特定时间调用memory_info()时,可以在我们之前声明的同一process
对象上运行此
print(process.memory_info())
CPU和内存结果的确切含义取决于您所使用的平台。 here
说明了内存信息结构一个更全面的示例显示了如何在进行keras训练时使用Advanced Python Scheduler在后台进行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)