#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 . зависит от того, что вы пытаетесь измерить.