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

时间:2018-06-26 15:23:53

标签: python timeout

我正在研究的一个Python项目要求任务在一定时间限制内完成。如果在完成之前达到了时间限制,则整个任务将终止。

最初,我想使用while循环检查时间;但是,这仍然意味着将通过循环检查一次时间。有没有解决此问题的最佳方法?

2 个答案:

答案 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

这就是我在执行您描述的内容时所使用的。如果您的任务已完成,它将检查整个时间限制并中断循环。