Простой будильник и проверка времени каждую секунду - PullRequest
1 голос
/ 10 января 2011

Я создаю будильник на python, и у меня простой вопрос:

Разрешение моего будильника должно быть меньше секунды. В настоящее время у меня есть поток, который просыпается каждые 0,5 секунды, и проверяет, пора ли начать шуметь.

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

Итак, мой вопрос, будет ли проверка каждые 0,05 секунды лучше? Или есть способ зарегистрировать обработчик событий в python на определенное время, поэтому мне не нужно самому проверять время.

Ответы [ 2 ]

2 голосов
/ 10 января 2011

Проверьте стандартный signal модуль для функций таймера.

Кроме того, если вы уже знаете, когда инициировать действие, почему бы не выполнить time.sleep(seconds) непосредственно перед его выполнением? (seconds должно быть оставшееся время для запуска действия в секундах, очевидно)

2 голосов
/ 10 января 2011

Это не лучшее решение.Это не гарантия, что вы заблокированы более чем на одну секунду.

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

...