Функция времени с минимально возможной детализацией?

#python #time

#python #время

Вопрос:

 x = time.time_ns()
y = time.time_ns()
print(x == y)
  

В идеале, я бы хотел, чтобы приведенная выше функция печатала False , не вставляя между ними кучу (ненужного кода) — есть ли хороший способ сделать это на Python? Или пределы детализации для переменных Python делают это невозможным?

Комментарии:

1. Что вы хотите сделать?

2. Причина, по которой я спрашиваю об этом, заключается в том, что я пытаюсь реализовать политику замены LRU для модели кэша, которую я создаю, — но это скорее общий вопрос, чем что-либо еще.

3. Но time.time_ns() это не будет стоить слишком много времени (меньше «ns»). Чтобы сократить время, потраченное впустую time.time_ns() , возможно, вы могли бы рассмотреть возможность использования timeit .

Ответ №1:

Нет гарантии, что система на самом деле имеет достаточно детализированные часы, но time.perf_counter предоставит вам максимально возможную степень детализации. В документации Python утверждается, что он использует часы с «наивысшим доступным разрешением для измерения короткой продолжительности».

Возвращает значение (в долях секунды) счетчика производительности, т.е. часы с максимально доступным разрешением для измерения короткой продолжительности. Она включает время, прошедшее во время ожидания, и является общесистемной. Точка отсчета возвращаемого значения не определена, так что допустима только разница между результатами последовательных вызовов.

Существует также time.perf_counter_ns , которая похожа на приведенную выше, но возвращает время в виде целого числа наносекунд, избегая ограничений точности с плавающей запятой (хотя не гарантируется, что значение действительно будет иметь наносекундную точность).

time.perf_counter является таймером по умолчанию для timeit модуля (исходного кода).