Установите время ожидания для ЦИКЛА FOR в Python

#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. Я изменил свой код, пожалуйста, взгляните