让 python 中的任务运行直到超时的最佳方法



我正在处理的一个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

这是我在做你描述的事情时使用的。它将检查总体时间限制,并在任务完成时中断循环。

相关内容

  • 没有找到相关文章

最新更新