Получить время POSIX/Unix в секундах и наносекундах в Python?

Я пытался найти способ получить время с тех пор 01.01.1970 0:00:00 UTC в секундах и наносекундах в Python, и я не могу найти ничего, что даст мне надлежащую точность.

Я попытался использовать модуль времени, но та точность только к микросекундам, таким образом, код, который я попробовал, был:

import time

print time.time()

который дал мне результат как это:

1267918039.01

Однако мне нужен результат, который похож на это:

1267918039.331291406

Кто-либо знает возможный способ выразить время UNIX в секундах и наносекундах? Я не могу найти способ установить надлежащую точность или получить результат в правильном формате. Спасибо за любую справку

42
задан Eric Leschinski 26 April 2015 в 01:00
поделиться

4 ответа

Ваша точность просто теряется из-за форматирования строки:

>>> import time
>>> print "%.20f" % time.time()
1267919090.35663390159606933594
40
ответ дан 26 November 2019 в 23:45
поделиться

Маловероятно, что вы действительно сможете получить наносекундную точность от какой-либо существующей машины.

Аппарат не может обеспечить точность, и отображение значащих цифр там, где это не подходит, - это не то, что нужно делать.

4
ответ дан 26 November 2019 в 23:45
поделиться

Я не думаю, что существует независимый от платформы способ (может быть, какой-то сторонний разработчик его закодировал, но я не могу его найти), чтобы получить время наносекунды; вам нужно сделать это в зависимости от платформы. Например, ответ на этот вопрос SO показывает, как это сделать на платформе, которая предоставляет системную библиотеку librt.so для операций в реальном времени.

2
ответ дан 26 November 2019 в 23:45
поделиться

Вероятно, проблема связана с вашей ОС, а не с Python. См. Документацию модуля time : http://docs.python.org/library/time.html

time. time ()

Возвращает время как число с плавающей запятой , выраженное в секундах, начиная с эпохи , в UTC. Обратите внимание, что даже несмотря на то, что время всегда возвращается как число с плавающей запятой , не все системы обеспечивают точность времени с большей точностью, чем 1 секунда. . Хотя эта функция обычно возвращает неубывающих значений, она может возвращать более низкое значение, чем предыдущий вызов, если системные часы были переведены назад {{ 1}} между двумя вызовами.

Другими словами: если ваша ОС не может этого сделать, то и Python не сможет этого сделать.Вы можете умножить возвращаемое значение на соответствующий порядок, чтобы получить наносекундное значение, хотя оно может быть неточным.

РЕДАКТИРОВАТЬ: Возвращаемое значение - это переменная с плавающей запятой, поэтому количество цифр после запятой будет варьироваться, независимо от того, имеет ли ваша ОС такой уровень точности или нет. Вы можете отформатировать его с помощью "%. Nf" , где n - это количество цифр, которое вы хотите, однако, если вы хотите строковое представление с фиксированной запятой.

9
ответ дан 26 November 2019 в 23:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: