import time time.get_clock_info(name)
name
- строка с именем часов.Функция get_clock_info()
модуля time
получает детали реализации и точность указанных часов в качестве объекта пространства имен.
Поддерживаемые имена часов и соответствующие функции для чтения их значения:
'monotonic'
: time.monotonic()
,'perf_counter'
: time.perf_counter()
,'process_time'
: time.process_time()
,'thread_time'
: time.thread_time()
,'time'
: time.time()
.Результат имеет следующие атрибуты:
adjustable
: True
, если часы могут быть изменены автоматически, например демоном NTP
или вручную системным администратором, иначе - False
,implementation
: имя базовой функции языка C, используемой для получения значения часов,monotonic
: True
, если часы не зависят от корректировки системного времени, False
в противном случае,resolution
: разрешение часов в секундах типа float
.import textwrap import time available_clocks = [ ('monotonic', time.monotonic), ('perf_counter', time.perf_counter), ('process_time', time.process_time), ('time', time.time), ] for clock_name, func in available_clocks: info=time.get_clock_info(clock_name) rez = textwrap.dedent(f'''\ {clock_name}: adjustable : {info.adjustable} implementation: {info.implementation} monotonic : {info.monotonic} resolution : {info.resolution} current : {func()} ''') print(rez)
Ниже вывод для OS Linux показывает, что часы с именем monotonic
и perf_counter
реализованы с использованием одного и того же системного вызова CLOCK_MONOTONIC
.
monotonic: adjustable : False implementation: clock_gettime(CLOCK_MONOTONIC) monotonic : True resolution : 1e-09 current : 12870.08461075 perf_counter: adjustable : False implementation: clock_gettime(CLOCK_MONOTONIC) monotonic : True resolution : 1e-09 current : 12870.084681206 process_time: adjustable : False implementation: clock_gettime(CLOCK_PROCESS_CPUTIME_ID) monotonic : True resolution : 1e-09 current : 0.013859852 time: adjustable : True implementation: clock_gettime(CLOCK_REALTIME) monotonic : False resolution : 1e-09 current : 1587732782.3735676