python->;循环运行了一段时间

python->;循环运行了一段时间,python,loops,time,permutation,while-loop,Python,Loops,Time,Permutation,While Loop,我有一个循环,一次最多运行几个小时。我怎么能让它告诉我每隔一段时间有多长 只是一个普通的…问题 编辑:这是一个运行排列的while循环,所以我可以让它每10秒打印一次运行的时间吗?有一种非常简单的方法,使用time.asctime()来实现这一点。在进入while循环之前以及在循环本身的某个地方存储asctime。计算存储时间和当前时间之间的时间差,如果该差为10秒,则将存储时间更新为当前时间,并打印该时间正在运行 然而,这是一种非常粗糙的方法,因为它需要一些扭曲和枯燥的数学 如果您的目标是检查

我有一个循环,一次最多运行几个小时。我怎么能让它告诉我每隔一段时间有多长

只是一个普通的…问题


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

有一种非常简单的方法,使用time.asctime()来实现这一点。在进入while循环之前以及在循环本身的某个地方存储asctime。计算存储时间和当前时间之间的时间差,如果该差为10秒,则将存储时间更新为当前时间,并打印该时间正在运行

然而,这是一种非常粗糙的方法,因为它需要一些扭曲和枯燥的数学

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


希望这有帮助

如前所述,这是一个有点讨厌的攻击,因为它涉及到检查每次迭代的时间。为了让它工作,您需要让任务在一小部分超时时间内运行—如果您的循环仅每分钟迭代一次,那么它不会每十秒钟打印一次。如果你想被中断,你可以考虑多线程,或者最好是在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

您可以使用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)

ohmygosh我爱你,但是
传递的是什么?我是否放置了一些东西来代替它?
pass
是空操作,它只是一个占位符,什么也不做()。用你自己的代码替换它。嗯,我不知道
定时器
对象,我建议你在下面的答案中切换到使用它。+1比我的答案好得多,我喜欢python包含了这样的电池。