Почему последовательные вызовы 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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