Я создаю будильник на питоне и задаю простой вопрос:
Мое разрешение будильника должно быть ниже второго. В настоящее время у меня есть поток, который просыпается каждые 0,5 секунды и проверяет, не пришло ли время, чтобы начать шуметь.
Моя единственная забота заключается в том, что каким-то образом система становится полностью перегруженной в какой-то момент, и сигнал тревоги не звучит, потому что поток будильника все еще спал во время второго, он должен был проверить время.
Итак, мой вопрос: будет ли проверка каждые 0,05 секунды лучше? Или есть способ зарегистрировать обработчик событий с помощью python в течение определенного времени, поэтому мне не нужно постоянно проверять время.
Отметьте стандартный signal
модуль для функций таймера.
Кроме того, если вы уже знаете, когда запускать действие, почему бы не выполнить time.sleep(seconds)
непосредственно перед его выполнением? (seconds
должно быть время, оставшееся для запуска действия в секундах, очевидно)
time.sleep
намного эффективнее. Я думаю, что вопрос был ориентирован на обработку одного события, но вы всегда можете отправить несколько событий в несколько потоков.
Это не лучшее решение. Это не гарантирует, что вы заблокированы более одной секунды.
Вы должны придерживаться разрешения 0,5 секунды (или, что еще хуже, если жизнь не зависит от него) и запускать событие каждый раз, когда он находится в состоянии или в прошлом, и держать флаг на событие, если оно были уволены. Тогда он будет всегда срабатывать ровно один раз и как можно ближе к целевому времени.