Следующий подход должен работать, он сначала вычисляет 6 минут в будущем и запускает ваш «скрипт», выполняющий 500 раз. Затем он просто ждет в цикле до тех пор, пока не будет достигнуто время пробуждения. Таким образом, ваш скрипт может занимать любое количество времени. Если это займет больше времени, то следующие 500 начнутся немедленно.
import time
wakeup = time.time()
while True:
wakeup += 6 * 60
for i in range(500):
# something
# Has it taken longer the 6 minutes?
if time.time() > wakeup:
break
while time.time() < wakeup:
time.sleep(1)
Вы можете изменить значение любой вашей нужды, например sleep(1)
5. Это не повлияет на общую скорость, а просто означает, что следующая итерация начнется в течение 5 секунд 6 минут, а не 1 секунда 6 минут (если это имеет смысл).
Попробуйте следующую демонстрационную версию: Следующая версия работает каждые 6 секунд (не минут) и пытается выполнить цикл for
20 раз. Я замедляю его на 0,5 секунды каждую итерацию, чтобы имитировать работу.
import time
wakeup = time.time()
while True:
wakeup += 6
print "start",
for i in range(20):
time.sleep(0.5) # simulate work
print i,
if time.time() > wakeup:
break
print "finished"
while time.time() < wakeup:
time.sleep(1)
Вы увидите следующий вывод:
start 0 1 2 3 4 5 6 7 8 9 10 11 12 finished
start 0 1 2 3 4 5 6 7 8 9 10 finished
start 0 1 2 3 4 5 6 7 8 9 10 11 finished
Как вы можете видеть, цикл прерывается, когда 6 секунд и, прежде чем все 20 итераций будут достигнуты, и затем перезапущен.
Использовать сон (...) метод временного модуля в течение 6 минут time.sleep (300) – mmachine
@mmachine Но он остановит цикл после одного раунда в течение 6 минут, и я не хочу его –