Ответ 1
В этом контексте есть два разных типа "время": абсолютное время и относительное время.
Абсолютное время - это "реальное время", которое возвращается time.time()
и с которым мы все привыкли. Обычно это измеряется с фиксированной точки времени в прошлом (например, UNIX-эпоха 00:00:00 UTC 01/01/1970) с разрешением не менее 1 секунды. Современные системы обычно обеспечивают милли- или микросекундное разрешение. Он поддерживается специальным оборудованием на большинстве компьютеров, схема RTC (часы реального времени) обычно питается от батареи, поэтому система отслеживает реальное время между бонусами. Это "реальное время" также может быть изменено в зависимости от вашего местоположения (временные зоны) и сезона (летнее время) или выражено как смещение от UTC (также известное как GMT или Zulu time).
Во-вторых, есть относительное время, которое возвращается time.perf_counter
и time.process_time
. Этот тип времени не имеет определенного отношения к реальному времени, в том смысле, что отношения являются специфическими для системы и реализации. Его можно использовать только для измерения временных интервалов, т.е. Значения без единицы, которое пропорционально времени, прошедшему между двумя моментами. Это в основном используется для оценки относительной производительности (например, выполняется ли эта версия кода быстрее, чем эта версия кода).
В современных системах он измеряется с помощью счетчика CPU, который монотонно увеличивается с частотой, связанной с аппаратными часами ЦП. Разрешение счетчика сильно зависит от аппаратного обеспечения системы, значение не может быть надежно связано с реальным временем или даже сравнивается между системами в большинстве случаев. Кроме того, значение счетчика reset при каждом включении CPU или reset.
time.perf_counter
возвращает абсолютное значение счетчика. time.process_time
- это значение, которое выводится из счетчика ЦП, но обновляется только тогда, когда данный процесс выполняется на ЦПУ и может быть разбит на "пользовательское время", это время, когда сам процесс запускается на ЦПУ, и "системное время", которое является временем, когда ядро операционной системы работает на процессоре от имени процесса.