我正在处理的一个Python项目要求在一定的时间限制下运行任务以完成。如果在完成之前达到时间限制,则整个任务将终止。
最初,我想使用 while 循环来检查时间;但是,这仍然意味着时间将通过循环检查一次。有没有最好的方法可以解决这个问题?
如果要在循环中的多个点检查运行时(而不是每个循环仅检查一次(,则可以编写一个函数来执行此操作。
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()
时,您的运行时可能会超过最大运行时。
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
这是我在做你描述的事情时使用的。它将检查总体时间限制,并在任务完成时中断循环。