Python-разрешение datetime.now ()
from datetime import datetime
import time
for i in range(1000):
curr_time = datetime.now()
print(curr_time)
time.sleep(0.0001)
Я тестировал разрешениеdatetime.now()
, Поскольку предполагается вывод в микросекундах, я ожидал, что каждый отпечаток будет разным.
Тем не менее, я всегда получаю что-то подобное.
...
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.212073
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
2015-07-10 22:38:47.213074
...
Почему так происходит? Есть ли способ получить точную метку времени до микросекунды? На самом деле мне не нужны микросекунды, но было бы неплохо получить разрешение 0,1 мс.
=== ОБНОВЛЕНИЕ ====
Я сравнил это с использованием time.perf_counter () и добавлением к стартовойdatetime
от datetime импорт datetime, timedelta время импорта
datetime0 = datetime.now()
t0 = time.perf_counter()
for i in range(1000):
print('datetime.now(): ', datetime.now())
print('time.perf_counter(): ', datetime0 + timedelta(0, time.perf_counter()-t0))
print('\n')
time.sleep(0.000001)
Я не уверен, насколько это «точно», но разрешение, по крайней мере, выше… это не имеет значения, так как мой компьютер не может печатать даже на такой высокой скорости. Для моей цели, для которой мне просто нужны разные временные метки, чтобы различать разные записи, мне этого достаточно.
...
datetime.now(): 2015-07-10 23:24:18.010377
time.perf_counter(): 2015-07-10 23:24:18.010352
datetime.now(): 2015-07-10 23:24:18.010377
time.perf_counter(): 2015-07-10 23:24:18.010545
datetime.now(): 2015-07-10 23:24:18.010377
time.perf_counter(): 2015-07-10 23:24:18.010745
datetime.now(): 2015-07-10 23:24:18.011377
time.perf_counter(): 2015-07-10 23:24:18.010961
datetime.now(): 2015-07-10 23:24:18.011377
time.perf_counter(): 2015-07-10 23:24:18.011155
datetime.now(): 2015-07-10 23:24:18.011377
time.perf_counter(): 2015-07-10 23:24:18.011369
datetime.now(): 2015-07-10 23:24:18.011377
time.perf_counter(): 2015-07-10 23:24:18.011596
datetime.now(): 2015-07-10 23:24:18.012379
time.perf_counter(): 2015-07-10 23:24:18.011829
datetime.now(): 2015-07-10 23:24:18.012379
time.perf_counter(): 2015-07-10 23:24:18.012026
datetime.now(): 2015-07-10 23:24:18.012379
time.perf_counter(): 2015-07-10 23:24:18.012232
datetime.now(): 2015-07-10 23:24:18.012379
time.perf_counter(): 2015-07-10 23:24:18.012424
datetime.now(): 2015-07-10 23:24:18.012379
time.perf_counter(): 2015-07-10 23:24:18.012619
datetime.now(): 2015-07-10 23:24:18.013380
time.perf_counter(): 2015-07-10 23:24:18.012844
datetime.now(): 2015-07-10 23:24:18.013380
time.perf_counter(): 2015-07-10 23:24:18.013044
datetime.now(): 2015-07-10 23:24:18.013380
time.perf_counter(): 2015-07-10 23:24:18.013242
datetime.now(): 2015-07-10 23:24:18.013380
time.perf_counter(): 2015-07-10 23:24:18.013437
datetime.now(): 2015-07-10 23:24:18.013380
time.perf_counter(): 2015-07-10 23:24:18.013638
datetime.now(): 2015-07-10 23:24:18.014379
time.perf_counter(): 2015-07-10 23:24:18.013903
datetime.now(): 2015-07-10 23:24:18.014379
time.perf_counter(): 2015-07-10 23:24:18.014125
datetime.now(): 2015-07-10 23:24:18.014379
time.perf_counter(): 2015-07-10 23:24:18.014328
datetime.now(): 2015-07-10 23:24:18.014379
time.perf_counter(): 2015-07-10 23:24:18.014526
datetime.now(): 2015-07-10 23:24:18.014379
time.perf_counter(): 2015-07-10 23:24:18.014721
datetime.now(): 2015-07-10 23:24:18.015381
time.perf_counter(): 2015-07-10 23:24:18.014919
...