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包含了这样的电池。