2014-09-10 2 views
0

Мне нужна функция для выполнения при каждом изменении даты. В настоящее время я проверяю в цикле, чтобы увидеть, если дата изменилась, но я искал более эффективный метод .... в PythonФункция, которая выполняется при изменении даты

Любая помощь оценили

+0

Рассматривали ли вы использование задания cron для выполнения этого и просто запускаете программу периодически? – 2014-09-10 20:06:00

+0

какая ОС вы используете? –

+0

Raspbian Wheezy на моем RPi –

ответ

2

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

APScheduler - очень зрелая хорошая библиотека для такого рода вещей.

Docs: http://apscheduler.readthedocs.org/en/latest/

PyPi: https://pypi.python.org/pypi/APScheduler/3.0.0

Пример

Вот быстрый маленький пример

from apscheduler.schedulers.background import BlockingScheduler 

scheduler = BlockingScheduler() 

@scheduler.scheduled_job('interval', seconds=5, timezone='UTC') 
def hello(): 
    print('Hello!') 

scheduler.start() 

Это будет работать функция hello каждые пять секунд. Вы можете изменить seconds=5 на days=1, чтобы он запускался один раз в день. Существует много больше конфигурации вы можете сделать, поэтому вы, вероятно, захотите прочитать документацию. Он может выразить примерно любой формат времени даты, который вы могли бы захотеть, включая cron.

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

+0

Спасибо, дайте ему попробовать –

+0

Спасибо, что apscheduler работает в качестве фона Scheduler работает отлично! –

+0

@FrancoisWattel Я рад, что он работает на вас. Если вы ответили правильно, ответьте. – isomarcte

Смежные вопросы