#python #for-loop
Вопрос:
У меня есть задача, которую нужно повторить 1000 раз, но иногда она застревает в цикле For , поэтому я хочу установить для нее тайм-аут, например, через 30 секунд, если задание не будет выполнено, сценарий продолжится
profile = [p for p in range(1000,2000)] start_time = time.time() for i in range(Len(profile)): current_time = time.time() if current_time - start_time gt; 20: break # if break here the whole loop will stop not only iteration that take longer than 20 else: #do my job here, it usually takes 10 sec to complete #but for some reasons, It may stuck here forever #how to set a timeout, if it takes more than 20 sec, script will continue next iteration of the loop
Ответ №1:
Использовать time
модуль:
import time start = time.time() for i in range(1000,2000): if (time.time() - start) gt; 20: break
Комментарии:
1. это сработает, если я использую цикл While, но для цикла он проверяет время только один раз, после проверки времени моя работа все еще выполняется дольше, чем условие времени 🙁
2. Что вы имеете в виду, проверяя время только один раз? он проверяет каждую итерацию цикла, поэтому, если итерация займет больше времени, она остановится только на следующей. Можете ли вы включить оставшуюся часть кода, чтобы я мог взглянуть?
3. Я изменил свой код, пожалуйста, взгляните