Избежать бесконечного цикла

Есть функция. Если её вызвать, то она может уйти в бесконечный цикл. Как сделать так, чтобы спустя минуту без результата функция возвращала None?


Ответы (2 шт):

Автор решения: Тим Муранов

Если речь идет про неизменную сложность алгоритма в цикле, то можно поставить селектор на количество итераций, равное по скорости нужному промежутку времени. Допустим, одна итерация протекает за Х микросекунд. То есть через 60000000/Х пройдёт примерно минута.

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

Чечтно говорю, в питоне не силен, но может сработать.

→ Ссылка
Автор решения: Fox Fox

Консольная программка-идея:

import os
import time

def check_result(ok):
 if not ok: result = None
 else: result = True
 print(result)
 return result

while True:
 ok = False
 time.sleep(60)
 # Тут код проверки требуемого результата, если она успешна, ok = True
 check_result(ok)

os.system("pause")
→ Ссылка