2016-06-08 3 views
0

Выпуск: При вызове функции time.time() я замечаю, что прыгает около 30 секунд после перезагрузки. При прыжке я имею в виду, что меняет свое возвращаемое значение примерно на 40 секунд мгновенно.time.time() значения прыгают

Установка: Я бегу мой сценарий на Raspberry Pi 3B, immeadiately после перезагрузки. Проблема не возникает при запуске позже.

Вопрос: Почему это происходит? Я подозреваю, что малина меняет свои системные часы в какой-то момент после перезагрузки через WiFi. Может быть, это проблема? Я не думаю, что код публикации полезен, так как это действительно вопрос, связанный с функцией time.time().

+0

Итак, для ответа на свой вопрос, что он делает, если отключить WiFi? – Brian

ответ

2

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

Возможно, вы захотите использовать монотонный таймер, если хотите избежать этих прыжков. Python 3.3 представил time.monotonic(), проверьте его. Из документации:

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

Для Python < 3.3 есть также monotonic third party package.

0

Проверьте, что это часы с внешнего источника, такого как NPT.

2

Это, скорее всего, потому, что у малины Pi нет часов реального времени. Вместо этого я бы рекомендовал вам использовать монотонность. Это должно обеспечить согласованный вывод, независимо от того, изменяется ли системный такт.

Библиотека, которую я обычно использую, доступна here и поддерживает как Python 2.7, так и Python 3.X.

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