Лучший способ измерения процессорного времени в Python3?

#python #python-3.x #timing #cpu-time

#python #python-3.x #время #процессорное время

Вопрос:

Мне любопытно, какой в настоящее время лучший метод измерения процессорного времени в Python3. Чтобы было ясно, результат, который я хочу, — это общее время работы процессора, в течение которого программа была запущена (т. Е. Не Время настенных часов).

Я использовал time модуль для этого в прошлом, но мне неясно, является ли это все еще рекомендуемым методом.

Если time модуль является лучшим вариантом, мне интересно, лучше ли time.process_time() or time.clock() .

Комментарии:

1. может быть, вы можете увидеть python.org/dev/peps/pep-0418/#list-of-hardware-clocks

Ответ №1:

Для процессорного времени time.process_time() или time.thread_time() подходит — в зависимости от того, что вы измеряете, и используете ли вы многопоточность или нет.

time.clock() устарел

Помните о вводе-выводе. Если вы выполняете блокирующий ввод-вывод, он будет учитываться в процессорном времени. Неблокирующий ввод-вывод (например, asyncio) переводит поток в спящий режим, следовательно, не учитывает его во время процессора.

Документация для этого довольно хорошая, и я бы порекомендовал вам подробно ознакомиться с ней https://docs.python.org/3/library/time.html#time.time

Комментарии:

1. Так time.process_time() подходит для многопоточных измерений, тогда time.thread_time() как не подходит для многопоточности?

2. обе функции измеряют разные вещи. если вы хотите измерить текущее время потока, вероятно, будет использоваться thread_time . если вы хотите измерить время процесса (которое могло породить несколько потоков внутри него), вы будете использовать process_time . зависит от того, что вы пытаетесь измерить.