Почему последовательные вызовы perf_counter_ns в Windows могут возвращать одно и то же число?Python

Программы на Python
Anonymous
Почему последовательные вызовы perf_counter_ns в Windows могут возвращать одно и то же число?

Сообщение Anonymous »

Используя приведенный ниже код, я предполагал, что значение cnt будет близко к 0, но в Windows я вижу только значения выше 500 000.

Код: Выделить всё

from time import *

def test_time(f, c):
cnt = 0
for i in range(c):
ps, ts = f(), f()
if not ps - ts:
cnt += 1
return cnt

if __name__ == '__main__':
res = test_time(perf_counter_ns, 1_000_000)
print(res) # Usually returns a count of over 500k
В Linux этого не происходит. Я понимаю, что выходное разрешение в Windows ограничено шагом 100 нс. Я что-то упустил или есть способ заставить это работать в Windows?
Другим могут быть полезны Высокоточные часы в Python, как предложено @JonSG. Он дает хороший обзор точного измерения времени с помощью Python, но не затрагивает более узкий вопрос, почему последовательные вызовы perf_counter_ns могут давать одно и то же значение в Windows, а не в Linux.
Я тестировал такое поведение с 3.11, 3.12 и 3.13.
Я тестировал ограничение процесса интерпретатора Python в Windows одним ядром или изменение приоритета процесса. Ни то, ни другое не оказало очевидного влияния на количество столкновений.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ame-number

Вернуться в «Python»