我正在研究的一个Python项目要求任务在一定时间限制内完成。如果在完成之前达到了时间限制,则整个任务将终止。
最初,我想使用while循环检查时间;但是,这仍然意味着将通过循环检查一次时间。有没有解决此问题的最佳方法?
答案 0 :(得分:0)
如果要在循环的多个点(而不是每个循环仅检查一次)检查运行时,可以编写一个函数来这样做。
from time import time
start_time = time()
max_runtime = 1000 # maximum runtime in seconds
def end_loop():
if time()-start_time > max_runtime:
return True
else:
return False
然后您可以将其插入循环中的各个点,就像这样:
while time()-start_time < max_runtime:
# do some stuff
if end_loop():
break
# do some more stuff
if end_loop():
break
这样,您无需等到循环开始就可以检查运行时。但是,此方法仅允许您在代码中的有限点检查运行时,因为只有在调用end_loop()
时才可能中断循环。等待下一个end_loop()
时,您的运行时间可能会超过最大运行时间。
答案 1 :(得分:-1)
import time
# This will set t_end at 5 minutes
t_end = time.time() * (60 * 5)
while time.time() < t_end:
if (condition):
break
else:
code
这就是我在执行您描述的内容时所使用的。如果您的任务已完成,它将检查整个时间限制并中断循环。