Лучший способ запустить задачу в Python до истечения времени ожидания - PullRequest
0 голосов
/ 26 июня 2018

Один из проектов Python, над которым я работаю, просит выполнить задачу до определенного времени. Если предельный срок достигнут до завершения, общая задача завершается.

Изначально я хотел использовать цикл while для проверки времени; однако это все равно будет означать, что время будет проверено один раз в цикле. Есть ли оптимальный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Если вы хотите проверить время выполнения в нескольких точках цикла (вместо одного раза в цикле), вы можете написать для этого функцию.

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().

0 голосов
/ 26 июня 2018
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

Это то, что я использую, когда делаю то, что вы описали. Он проверит общий лимит времени, а также прервет цикл, если ваша задача была выполнена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...