Что здесь происходит? Возвращается ли значение для datetime.datetime.now () в 1 мс? Если это так, выполняется ли это на стороне Python или на стороне C?
Кэширование не используется. Как задокументировано datetime.now
относится к time.time
, который не является высокоточным тактовым сигналом и (также как документировано) может даже не иметь разрешения в доли секунды:
Обратите внимание, что хотя время всегда возвращается как число с плавающей запятой, не все системы предоставляют время с большей точностью, чем 1 секунда.
Следовательно, разрешение datetime.now
будет зависеть от системы, в которой он запущен, и конфигурации этой системы.
Предполагается, что вы работаете в windows, PEP 564 задокументировал разрешение time.time()
как 894us или 0,9 мс, достаточно близкое к 1 мс (для Windows 8).
Вы можете использовать альтернативные часы для документов, если вам нужно более высокое разрешение:
time.time_ns()
имеет разрешение ~ 300 мкс на Windows perf_counter()
имеет разрешение 100 нс, однако не возвращает отметку времени , поэтому требуется больше работы, так как вам нужно сохранить эталонную метку времени и perf_counter, а затем использовать эти , чтобы сместить следующие счетчики перфораций и получить фактические метки времени.