Как периодически проверять текущую дату из программы? - PullRequest
3 голосов
/ 04 июля 2011

Я хотел бы написать крошечное приложение, похожее на календарь, для кого-то в качестве подарка на день рождения (для запуска в Ubuntu).Все, что он должен делать, это отображать отдельное изображение каждый день, поэтому, когда бы оно ни вызывалось, оно должно проверять дату и выбирать соответствующее изображение из коллекции, которую я бы предоставил, но также, если оно просто продолжает работать, оно должно переключаться на следующее изображение.когда начинается следующий день.

Проверка даты при вызове не является проблемой;мой вопрос относится ко второму случаю: как я могу сделать так, чтобы программа заметила начало следующего дня?Мой неуклюжий подход состоял бы в том, чтобы заставить его проверять текущую дату через равные промежутки времени и позволять ему изменять отображаемую картинку после изменения даты, но мне это кажется очень окольным и не особенно элегантным.

В случаелюбой из вас знает, как я могу это сделать, пожалуйста, не стесняйтесь отвечать.Я хотел бы написать приложение на Perl или Python, поэтому предложения по этим двум языкам будут приветствоваться, но любые другие предложения также будут оценены.

Большое спасибо за ваше время!

Ответы [ 2 ]

1 голос
/ 04 июля 2011

Ответ на этот вопрос может зависеть от системы.Управление временем выполнения вашей программы, вероятно, зависит от системы.На всех системах * nix я бы использовал cron.Предполагая на мгновение, что вы используете систему * nix, ответ зависит от того, что на самом деле делает программа.

Если нужно только выбрать изображение, я бы посоветовал не запускать его непрерывно,но завершает себя после его выбора, а затем запускается снова на следующий день (есть много руководств по настройке cron).

Если, однако, он имеет некоторую форму пользовательского интерфейса и, вероятно, (возможно чтение), чтобы продолжить работу в течение нескольких дней, тогда вы можете следовать двум подходам:

  1. Создайте свою программу такой, какая она есть, для периодического опроса текущего времени и сравнения дельты дат. Объекты Python timedelta могут помочь здесь.Это в значительной степени ваш не элегантный подход.
  2. Другое решение - отправить ему сигнал от cron, когда вы захотите обновить его.Этот процесс будет означать, что вам нужно будет сделать так, чтобы он знал и реагировал на что-то вроде USR1. Документы Python поговорите с этим, но вы можете найти много учебников в Интернете.Этот подход также очень хорошо работает для демонизированных приложений.

Я уверен, что есть и много других подходов, но это те, которые приходят на ум для быстрого и неприятного приложения.

1 голос
/ 04 июля 2011

Вы думали о планировании вызова вашего скрипта?

Для меня лучший подход заключается в следующем:

1. Есть два варианта запуска скрипта:

  • run_script
  • run_script --update

2. Запланируйте запуск обновления в некотором планировщике задач (например, Cron) для ежедневного выполнения.

3. Если вы хотите проверить изображение на текущий день, просто запустите сценарий без опции обновления.

Если вы хотите, чтобы я расширил любую из них, просто спросите об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...