Подтвердить что ты не робот

Как создать временную метку Python с миллисекундной детализацией?

Мне нужна единая временная метка миллисекунд (мс) с эпохи. Это не должно быть сложно, я уверен, что просто отсутствует какой-то метод datetime или что-то подобное.

Собственно микросекундная (μs) гранулярность тоже прекрасна. Я просто нуждаюсь в суб-1/10-й секунде.

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

...00250 Light is on
...01000 Light is off
...01750 Light is on
...02500 Light is on

Если у меня есть только вторая степень детализации, мой журнал будет выглядеть следующим образом:

...00 Light is on
...01 Light is off
...01 Light is on
...02 Light is on

Не достаточно точный.

4b9b3361

Ответ 1

import time
time.time() * 1000

где 1000 - миллисекунды в секунду. Если все, что вам нужно, это сотые доли секунды с эпохи, умножьте на 100.

Ответ 2

В Python datetime.now() может выдавать значение с большей точностью, чем time.time():

from datetime import datetime, timezone, timedelta

now = datetime.now(timezone.utc)
epoch = datetime(1970, 1, 1, tzinfo=timezone.utc) # use POSIX epoch
posix_timestamp_micros = (now - epoch) // timedelta(microseconds=1)
posix_timestamp_millis = posix_timestamp_micros // 1000 # or `/ 1e3` for float

Теоретически time.gmtime(0) (эпоха, используемая time.time()) может отличаться от 1970.