如何跟踪执行时间?

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