Понимание time.perf_counter () и time.process_time ()

У меня есть некоторые вопросы о новых функциях time.perf_counter() и time.process_time() .

Для первого из документации:

Возвратите значение (в дробных секундах) счетчика производительности, то есть часы с самым высоким доступным разрешением для измерения короткой продолжительности. Он включает время, прошедшее во время сна, и является общесистемным. Исходная точка возвращаемого значения не определена, поэтому допустима только разница между результатами последовательных вызовов.

Является ли это «высокое разрешение» одинаковым для всех систем? Или это всегда слегка зависит, если, например, мы используем окна ручного окна?
Вопрос исходит из того, что чтение документации time.time() говорит, что «не все системы обеспечивают время с лучшей точностью, чем 1 секунда», так как они могут обеспечить лучшее и более высокое разрешение сейчас?

О последнем, time.process_time() :

Возвращает значение (в дробных секундах) суммы системного и пользовательского времени процессора текущего процесса. Это не включает время, прошедшее во время сна. По определению это процесс по всей ширине. Исходная точка возвращаемого значения не определена, поэтому допустима только разница между результатами последовательных вызовов.

Я не понимаю, что такое «системное время» и «время процессора пользователя»? Какая разница?

One Solution collect form web for “Понимание time.perf_counter () и time.process_time ()”

В этом контексте есть два разных типа «времени»: абсолютное время и относительное время.

Абсолютное время – это «реальное время», которое возвращается time.time() и с которым мы все привыкли. Он обычно измеряется с фиксированного момента времени в прошлом (например, эпоха UNIX 00:00:00 UTC 01/01/1970) с разрешением не менее 1 секунды. Современные системы обычно обеспечивают милли- или микросекундное разрешение. Он поддерживается специальным оборудованием на большинстве компьютеров, схема RTC (часы реального времени) обычно питается от батареи, поэтому система отслеживает реальное время между бонусами. Это «реальное время» также может быть изменено в зависимости от вашего местоположения (временные зоны) и сезона (летнее время) или выражено как смещение от UTC (также известное как GMT или Zulu time).

Во-вторых, есть относительное время, которое возвращается time.perf_counter и time.process_time . Этот тип времени не имеет определенного отношения к реальному времени, в том смысле, что отношения являются специфическими для системы и реализации. Его можно использовать только для измерения временных интервалов, т. Е. Значения без единицы, которое пропорционально времени, прошедшему между двумя моментами. Это в основном используется для оценки относительной производительности (например, работает ли эта версия кода быстрее, чем эта версия кода).

В современных системах он измеряется с помощью счетчика CPU, который монотонно увеличивается с частотой, связанной с аппаратными часами процессора. Разрешение счетчика сильно зависит от аппаратного обеспечения системы, значение не может быть надежно связано с реальным временем или даже сравнивается между системами в большинстве случаев. Кроме того, значение счетчика сбрасывается при каждом включении или сбросе ЦП.

time.perf_counter возвращает абсолютное значение счетчика. time.process_time – это значение, которое выводится из счетчика CPU, но обновляется только тогда, когда данный процесс выполняется на процессоре и может быть разбит на «пользовательское время», это время, когда сам процесс запускается на CPU, и «системное время», которое является временем, когда ядро ​​операционной системы работает на процессоре от имени процесса.

  • TypeError: Отсутствует 1 обязательный позиционный аргумент: 'self'
  • python 2.x или 3.x
  • Область вложенного списка
  • Python: путаницы с urljoin
  • Моделирование катания на кубиках Python
  • Использовать для цикла внутри другого для цикла
  • Программно создавать функцию спецификации
  • Сделать переход на Python 3 - Лучшие практики
  • Python - лучший язык программирования в мире.