#python #python-3.x #time
#python #python-3.x #время
Вопрос:
Я пытаюсь измерить процессорное время в моем скрипте с помощью time.process_time()
, но он всегда возвращает одно и то же значение. Вот мой код:
import time
pt0 = time.process_time()
secuencia = [int(num) for num in '2,9,5,14,4,13,1,7,6,12,11,3,8,10'.split(',')]
pt1 = time.process_time()
n = 0
acumulado = 0
for num in secuencia:
if num > n:
n = num
acumulado = num
num_perdido = int(n*(n 1)/2 - acumulado)
if num_perdido == 0:
n = 1
num_perdido = n
pt2 = time.process_time()
print('pt0 =', pt0)
print('pt1 =', pt1)
print('pt2 =', pt2)
Файл secuencia.txt
содержит следующее:
2,9,5,14,4,13,1,7,6,12,11,3,8,10
И результат таков:
pt0 = 0.0625
pt1 = 0.0625
pt2 = 0.0625
Это из-за того, как работает функция, или я делаю что-то неправильно?
Комментарии:
1. Не могли бы вы, пожалуйста, предоставить некоторые примеры данных (например, список значений) вместо чтения из файла, которого у нас нет?
2. Каков результат
print(time.process_time())
? Он должен возвращать значение с плавающей точкой, но ваш вывод подразумевает целые числа.3. Я отредактировал и добавил данные в
secuencia.txt
, и теперь результат исправлен, я скопировал результат неправильного запуска4. Обратите внимание, что ваша программа делает не очень много. На моей машине различия заключаются всего лишь в
0.00009
(pt1-pt0
) и0.00018
(pt2-pt1
). Если ваша машина работает быстрее, это может быть ниже тактового разрешения. Выполните некоторые значительные вычисления при измерении производительности.5. вместо этого вы могли бы использовать time.perf_counter и посмотреть, работает ли это для вас.
Ответ №1:
пожалуйста, проверьте, есть ли какие-либо данные в secuencia.txt.
я проверил это с некоторыми данными, все выглядит нормально.
pt0 = 0.045034
pt1 = 0.045148
pt2 = 0.045154
Комментарии:
1. Я просто отредактировал вопрос и добавил данные о
secuencia.txt
. Только что проверил, и оно не было пустым.2. Ваш код в полном порядке. эта проблема уже зарегистрирована bugs.python.org/issue37859 используете ли вы Windows.
3. попробуйте использовать time.perf_counter() geeksforgeeks.org/time-perf_counter-function-in-python /… .
4. Да, я на Windows… Итак, кажется, что это может быть вызвано этим:
perf_counter and process_time have very different properties. process_time is stopped when the process sleeps, for example.