Я ожидаю, что эта задержка будет порядка наносекунд, поэтому, если вы хотите ее измерить, важно использовать точные часы и убедиться, что они согласованы. Также имейте в виду, что на этом уровне фактическое считывание часов будет стоить немало, поэтому это может быть нереалистичная цель c в первую очередь.
Для python 3 базовая C вызов функции доступен с использованием time.get_clock_info
В моей системе time.time()
использует clock_gettime(CLOCK_REALTIME)
In [1]: import time
In [2]: time.get_clock_info("time")
Out[2]: namespace(adjustable=True, implementation='clock_gettime(CLOCK_REALTIME)', monotonic=False, resolution=1e-09)
Это, вероятно, достаточно для ваших целей, но time.perf_counter()
, может иметь лучшую точность, особенно на windows.
Если вы застряли на python 2, согласно источнику time.time()
пытается использовать gettimeofday ( ), затем ftime (), затем time (). Поскольку windows не имеет gettimeofday, он будет использовать ftime для максимальной точности в миллисекундах, а в * nix gettimeofday имеет точность только в микросекунды.
На windows вы можете использовать time.clock()
, который использует QueryPerformanceCounter()
, но на linux он использует clock()
, что также обычно составляет всего микросекунду. точности, поэтому, вероятно, не хватает точности.
Возможно, вы могли бы попробовать другую стратегию и рассчитать время для полного выполнения пустой функции python с помощью clock_gettime или разницу между двумя python вызовами обертки ускорения для clock_gettime (), которая будет хотя бы получить верхнюю границу. Вы также можете рассчитать время для миллиона пустых вызовов функций или что-то в этом роде, чтобы избавиться от некоторых затрат на запросы времени.