我正在使用keras制作和测试不同类型的神经网络,并需要数据来比较它们。我需要有关训练和测试期间使用的CPU和内存的数据。这是在Python中实现的,我找到了很多有关psutil的建议。然而,我看到的所有内容似乎都是获取当前使用情况。
什么是当前使用情况?像特定时刻使用的内存量一样吗?如何使用它来获取整个程序或至少NN训练和测试代码部分使用的总CPU和内存?感谢任何帮助!
我正在使用keras制作和测试不同类型的神经网络,并需要数据来比较它们。我需要有关训练和测试期间使用的CPU和内存的数据。这是在Python中实现的,我找到了很多有关psutil的建议。然而,我看到的所有内容似乎都是获取当前使用情况。
什么是当前使用情况?像特定时刻使用的内存量一样吗?如何使用它来获取整个程序或至少NN训练和测试代码部分使用的总CPU和内存?感谢任何帮助!
psutil是收集此类信息的良好建议。如果您将此代码并入现有的keras代码中,则可以在调用cpu_times()方法时收集有关进程CPU使用情况的信息。
import psutil
process = psutil.Process()
print(process.cpu_times())
cpu_times()返回的值的含义在这里解释。它是累计的,因此如果您想知道您的keras代码总共使用了多少CPU时间,请在退出python脚本之前运行它。
要获取进程的内存使用信息,在调用memory_info()时,您可以在同一个process
对象上运行此命令,以获取特定时间的信息。
print(process.memory_info())
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)