如何跟踪执行时间?
How to keep track of execution time?
设置
我正在训练一些神经网络。这些有很多超参数,通常你会看到每组超参数的表现,然后选择你最喜欢的。这通常是通过(比方说)用给定参数训练网络 n
个时期,然后评估其性能,得出每组参数的数值分数并允许您选择最佳参数来完成的。
不过这有一个问题。有些参数集可以让你更快地经历更多的 epoch,但从每个 epoch 中获益更少。此外,几乎任何一组参数总是会做得更好,给定更多的 epoch,所以给定无限的时间,它们都会做得很好(在一定程度上,但现在不是重点)。
问题
我更愿意做的是让每个进程计算出它已经持续了多长时间 运行,并在指定的秒数后(优雅地)自行关闭。问题是,我想对此进行多线程处理,所以仅仅因为该程序已经 运行 60 秒并不意味着该进程有 60 秒的公平 CPU 时间。
那么我如何衡量进程本身实际可用的时间?
time.clock()
方法给出系统时间,有问题(同上)
timeit
模块似乎好一些,但它在脚本外部,因此进程不知道何时停止。
有没有更好的方法?我对上述方式之一有误吗?
具体问题
python 进程如何查看到目前为止分配给它的秒数?不是已经过去的时间量,而是它本身被允许执行多少秒?
使用os.times()
。
这为您提供了当前进程的用户和系统时间。下面是一个限制用户时间的例子。
start = os.times()
limit = 5 # seconds of user time
while True:
# your code here
check = os.times()
if check.user - start.user > limit:
break
设置
我正在训练一些神经网络。这些有很多超参数,通常你会看到每组超参数的表现,然后选择你最喜欢的。这通常是通过(比方说)用给定参数训练网络 n
个时期,然后评估其性能,得出每组参数的数值分数并允许您选择最佳参数来完成的。
不过这有一个问题。有些参数集可以让你更快地经历更多的 epoch,但从每个 epoch 中获益更少。此外,几乎任何一组参数总是会做得更好,给定更多的 epoch,所以给定无限的时间,它们都会做得很好(在一定程度上,但现在不是重点)。
问题
我更愿意做的是让每个进程计算出它已经持续了多长时间 运行,并在指定的秒数后(优雅地)自行关闭。问题是,我想对此进行多线程处理,所以仅仅因为该程序已经 运行 60 秒并不意味着该进程有 60 秒的公平 CPU 时间。
那么我如何衡量进程本身实际可用的时间?
time.clock()
方法给出系统时间,有问题(同上)
timeit
模块似乎好一些,但它在脚本外部,因此进程不知道何时停止。
有没有更好的方法?我对上述方式之一有误吗?
具体问题
python 进程如何查看到目前为止分配给它的秒数?不是已经过去的时间量,而是它本身被允许执行多少秒?
使用os.times()
。
这为您提供了当前进程的用户和系统时间。下面是一个限制用户时间的例子。
start = os.times()
limit = 5 # seconds of user time
while True:
# your code here
check = os.times()
if check.user - start.user > limit:
break