time.process_time() выдает постоянное значение

#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.