Как я могу повторить что-то в течение x минут в Python?

У меня есть программа (temptrack), где я должен загрузить данные о погоде каждый x минуты для x суммы часов. Я выяснил, как загрузить каждый x минуты с помощью time.sleep(x*60), но у меня нет подсказки, как повторить этот процесс для определенного количества часов.

ОБНОВЛЕНИЕ: Спасибо всем, кто отправил решение. Я отметил пример с помощью "datetime.datetime.now () + datetime.timedelta (hours=x)" как лучший ответ, потому что я мог понять это лучшее, и кажется, что он будет работать очень хорошо на мою цель.

5
задан Peter Mortensen 5 August 2010 в 10:30
поделиться

5 ответов

Вычислите время, в течение которого вы хотите прекратить делать то, что вы делаете, и каждый раз проверяйте, не истек ли срок. Примерно так:

finish_time = datetime.datetime.now() + datetime.timedelta(hours=6)
while datetime.datetime.now() < finish_time:
    do_something()
    sleep_for_a_bit()
4
ответ дан 14 December 2019 в 01:04
поделиться

Возможно, я вас неправильно понимаю, но просто включите это в цикл, который выполняется достаточное количество раз. Например, чтобы загружать каждые 5 минут в течение 2 часов, вам нужно загружать 24 раза, поэтому:

for i in range(24):
    download()
    sleep(5*60)

Если вам нужно, чтобы его можно было параметризовать, просто:

from __future__ import division
from math import ceil
betweenDLs = 5 # minutes
totalTime = 2*60 # minutes
for i in range(int(ceil(totalTime/betweenDLs))):
    download()
    sleep(betweenDLs*60)
-2
ответ дан 14 December 2019 в 01:04
поделиться

Вам нужен планировщик.

Проверьте эту ветку .

3
ответ дан 14 December 2019 в 01:04
поделиться

Может показаться излишним, но для выполнения фоновых задач, особенно если вам нужен графический интерфейс, я бы рекомендовал проверить маршрут PyQt с помощью QSystemTrayIcon и QTimer

0
ответ дан 14 December 2019 в 01:04
поделиться

Я только что нашел sched в стандартной библиотеке Python.

4
ответ дан 14 December 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: