Недавно я создавал приложение для регистрации ошибок и пытался точно установить время для входящих данных. Когда я говорю точно, я имею в виду, что каждая временная метка должна быть точной относительно друг друга (нет необходимости синхронизироваться с атомными часами или чем-то в этом роде).
Я использовал datetime.now () в качестве первого удара, но это не идеально:
>>> for i in range(0,1000):
... datetime.datetime.now()
...
datetime.datetime(2008, 10, 1, 13, 17, 27, 562000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 562000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 562000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 562000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 578000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 578000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 578000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 578000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 578000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 609000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 609000)
datetime.datetime(2008, 10, 1, 13, 17, 27, 609000)
etc.
Изменения между часами для первой секунды семплов выглядят так:
uSecs difference
562000
578000 16000
609000 31000
625000 16000
640000 15000
656000 16000
687000 31000
703000 16000
718000 15000
750000 32000
765000 15000
781000 16000
796000 15000
828000 32000
843000 15000
859000 16000
890000 31000
906000 16000
921000 15000
937000 16000
968000 31000
984000 16000
Таким образом, похоже, что данные таймера обновляются только каждые ~ 15-32 мс на моей машине. Проблема возникает, когда мы приходим к анализу данных, потому что сортировка по чему-то, отличному от временной отметки, а затем повторная сортировка по временной отметке может оставить данные в неправильном порядке (хронологически). Было бы неплохо, чтобы метки времени были точными до такой степени, что любой вызов генератора меток времени дает уникальную метку времени.
Я рассматривал некоторые методы, связанные с использованием вызова time.clock (), добавленного к начальной дате и времени, но был бы признателен за решение, которое бы точно работало между потоками на одной машине. Любые предложения будут с благодарностью приняты.