#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
модуля (исходного кода).