python - >一段时间循环一直在运行

时间:2011-01-18 02:52:37

标签: python loops time permutation while-loop

我有一个循环,一次运行几个小时。我怎么能告诉我它在设定的时间间隔内有多长时间?

只是一个通用的......问题

编辑:这是一个运行排列的while循环,所以我可以打印每10秒运行一次的时间吗?

3 个答案:

答案 0 :(得分:8)

您可以使用Timer对象

,而不是检查每个循环的时间
import time
from threading import Timer

def timeout_handler(timeout=10):
    print time.time()
    timer = Timer(timeout, timeout_handler)
    timer.start()

timeout_handler()
while True:
    print "loop"
    time.sleep(1)

答案 1 :(得分:2)

如上所述,这是一个讨厌的黑客,因为它涉及检查每次迭代的时间。为了使它工作,你需要运行一小部分超时的任务 - 如果你的循环只是每分钟迭代一次,它就不会每十秒打印一次。如果你想被打断,你可能会考虑多线程,或者最好是你在linux / mac / unix上的信号。你的平台是什么?

import time

timeout = 10
first_time = time.time()
last_time = first_time
while(True):
    pass #do something here
    new_time = time.time()
    if  new_time - last_time > timeout:
        last_time = new_time
        print "Its been %f seconds" % (new_time - first_time)

输出:

Its been 10.016000 seconds
Its been 20.031000 seconds
Its been 30.047000 seconds

答案 2 :(得分:1)

使用time.asctime()有一种非常黑客的方法。在进入while循环之前以及循环本身的某个位置存储asctime。计算存储时间与当前时间之间的时间差,如果差值为10秒,则将存储时间更新为当前时间并打印出已运行的时间。

然而,这是一种非常黑客的方式,因为它需要一些扭曲和无聊的数学。

如果您的目标是检查特定算法的运行时间,那么最好使用timeit模块

希望这有助于