time.clock() несколько раз в Python?
Использование Python 2.7.5 на Windows 7, у меня проблема.
Я пишу программу, которая должна рассчитывать время, необходимое для вычисления нескольких математических алгоритмов. я использую start=time.clock()
а также elapsed=time.clock()-start
, Это работает, но когда я пытаюсь сделать start=time.clock()
во второй раз это не работает. Я получаю это сообщение:
start=time.time()
AttributeError: 'float' object has no attribute 'time'
Я явно не могу использовать time.clock()
несколько раз, но что я могу использовать вместо этого?
3 ответа
Кажется, ваш код где-то time = <some calculated value>
заменив имя "время" указанием на правильный модуль для объекта с плавающей точкой.
Вы не должны использовать time.clock()
:
В Unix верните текущее время процессора в виде числа с плавающей запятой, выраженного в секундах. Точность и, собственно, само определение значения "процессорного времени" зависит от точности функции C с тем же именем, но в любом случае эту функцию следует использовать для тестирования Python или алгоритмов синхронизации.
В Windows эта функция возвращает настенные часы, прошедшие с момента первого вызова этой функции, в виде числа с плавающей запятой на основе функции Win32 QueryPerformanceCounter(). Разрешение обычно лучше, чем одна микросекунда.
Вместо этого используйте time.time()
:
Вернуть время в секундах с начала эпохи как число с плавающей запятой. Обратите внимание, что хотя время всегда возвращается как число с плавающей запятой, не все системы предоставляют время с большей точностью, чем 1 секунда. Хотя эта функция обычно возвращает неубывающие значения, она может вернуть более низкое значение, чем предыдущий вызов, если системные часы были установлены обратно между двумя вызовами.
Чтобы обозначить разницу в более простых терминах: при первом звонке time.clock()
он запустит таймер, каждый последующий вызов time.clock()
даст время с момента первого звонка. В то время как использование time.time()
всегда даст вам время, начиная с эпохи.
Чтобы уточнить, time.clock()
является методом измерения относительного времени, относительно того, когда вы впервые начинаете синхронизацию, используя time.clock()
метод, тогда как при использовании time.time()
Вы получаете секунды с эпохи каждый раз.
В обоих методах вы можете легко определить разницу между ними, но используя time.clock()
может привести к непредвиденным последствиям, когда требуются более сложные измерения времени, такие как множественные потоки или различные функции, которые должны взаимодействовать друг с другом - если они все синхронизируют себя относительно самих себя, трудно поддерживать постоянство.
У меня была такая же ошибка.
Я обнаружил, что назвал переменную time, то же самое имя, что и модуль времени.
Таким образом, он отвечает, что ваша переменная time не имеет атрибута time, поскольку ваша переменная перезаписывает время вашего модуля.
Проверьте имена переменных или измените имя модуля!
Вы могли бы
start1 = time.clock()
Calculation
print "Runtime: " + str(time.clock() - start1)
start2 = time.clock()
Calculation
print "Runtime: " + str(time.clock() - start2)