Содержание

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() несколько раз, но что я могу использовать вместо этого?

python time clock
Поделиться Источник Katja     16 октября 2013 в 12:27

4 ответа


  • Не удается получить значение из второго вызова time.clock() в Python

    Я пытаюсь вычислить время, затраченное между двумя вызовами функций.

    import time class timer(): def __init__(self) self.start_time = 0 self.stop_time = 0 def start_stream(self): self.start_time = time.clock() def stop_stream(self): self.stop_time = time.clock() print (Time elapsed: %s %…

  • Смущен поведением time.clock в Python

    Таким образом, я могу использовать time.clock() для измерения времени выполнения вызова функции: >>> def f() : a = time.clock() range(pow(10,8)) b = time.clock() print a,b >>> f() 0.143698 8.345905 Но теперь, если просто позвонить time.clock() несколько раз из интерактивного…



3

Похоже, что ваш код где-то имеет time = <some calculated value> , заменяющее имя «time» от указания на правильный модуль к объекту float.

Поделиться Nico    

16 октября 2013 в 12:30



2

Вы не должны использовать 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() может иметь непредвиденные последствия, когда требуются более сложные измерения времени, такие как несколько потоков или различные функции, которые должны взаимодействовать друг с другом — если все они синхронизируют себя относительно самих себя, трудно поддерживать вещи постоянными.

Поделиться

Inbar Rose     16 октября 2013 в 12:32



1

У меня была та же ошибка.

Я обнаружил, что назвал переменную ‘time’ тем же именем , что и модуль времени.

Так он отвечает вам, что ваша переменная имеет атрибут времени, потому что ваша переменная перезаписывается вашего модуля.

Проверьте свои имена переменных или измените имя модуля !

Поделиться Raphaël     05 февраля 2019 в 10:08


  • Диапазон time.clock() в Python

    Я использую Python 2.7.6 для измерения времени работы алгоритма: starting_time = time.clock() # run algorithm finishing_time = time.clock() running_time = (finishing_time — starting_time) Я запускаю алгоритм с разными размерами входных данных. Алгоритм o (n-квадрат), и я получаю следующие.

    ..

  • путаница в измерении времени выполнения с time.clock()!

    описание time.clock() : На Windows эта функция возвращает настенные часы секунд, прошедших с момента первого вызова этой функции, в виде числа с плавающей запятой, основанного на функции Win32 QueryPerformanceCounter(). Разрешение обычно лучше, чем одна микросекунда. Я обнаружил, что другие писали…



0

Вы могли бы получить

start1 = time.clock()

Calculation

print "Runtime: " + str(time.clock() - start1)

start2 = time.clock()

Calculation

print "Runtime: " + str(time.clock() - start2)

Поделиться user2003965    

16 октября 2013 в 12:35


Похожие вопросы:


time.clock() Python «против» time.time() точность?

Что лучше использовать для хронометража в Python? time. clock() или time.time()? Какой из них обеспечивает большую точность? например: start = time.clock() … do something elapsed = (time.clock() -…


Python time.clock()-сброс тактового значения с потоками

Я вижу time.clock() на Windows ‘starts’ таймер при первом вызове и возвращает эластичное время с момента первого вызова для вызовов после этого. Я читал, что единственный способ перезапустить часы -…


Python time.clock() против time.time() для синхронизации порожденного процесса

Я пытаюсь рассчитать время выполнения внешнего процесса, который я вызываю из python. Я хотел засечь время и увидел здесь , что time.clock() — это правильный путь. Однако я видел очень…


Не удается получить значение из второго вызова time.clock() в Python

Я пытаюсь вычислить время, затраченное между двумя вызовами функций. import time class timer(): def __init__(self) self.start_time = 0 self.stop_time = 0 def start_stream(self): self. start_time =…


Смущен поведением time.clock в Python

Таким образом, я могу использовать time.clock() для измерения времени выполнения вызова функции: >>> def f() : a = time.clock() range(pow(10,8)) b = time.clock() print a,b >>> f()…


Диапазон time.clock() в Python

Я использую Python 2.7.6 для измерения времени работы алгоритма: starting_time = time.clock() # run algorithm finishing_time = time.clock() running_time = (finishing_time — starting_time) Я запускаю…


путаница в измерении времени выполнения с time.clock()!

описание time.clock() : На Windows эта функция возвращает настенные часы секунд, прошедших с момента первого вызова этой функции, в виде числа с плавающей запятой, основанного на функции Win32…


Python: существенная разница между неделей time.time() и time.clock()?

Я пытаюсь проверить, сколько времени занимает блок кода обработки запроса http внутри моего контроллера flask, вот пример кода, который я использовал: cancelled = [] t0 = time. time() t1 =…


Сброс time.clock() в Python

start = time.clock() while True: elapsed = (time.clock() — start) if elapsed > 10: print(MOTION) elapsed = 0 Я запускаю таймер, вычисляю прошедшее время, и если прошло 10 секунд, я показываю…


python Time.clock слишком короткий результат

Я использую этот код для проверки функции time.clock() в python start = time.clock() print(start) time.sleep(3) end = time.clock() print(end) print(end-start) и вот результат 0.282109 0.282151…

python Time.clock слишком короткий результат



Я использую этот код для проверки функции time.clock() в python

start = time.clock()
print(start)
time.sleep(3)
end = time.clock()
print(end)
print(end-start)

и вот результат

0.282109
0.282151
4.199999999998649e-05

док говорит: «On Unix, верните текущее процессорное время в виде числа с плавающей запятой, выраженного в секундах».

но если поток спит в течение 3 секунд, то почему результат end-start так низок?

python
Поделиться Источник AFS     28 апреля 2018 в 11:39

2 ответа


  • Python time.clock() результат не точен и далек

    У меня есть следующий скрипт, с помощью которого я измеряю реальное прошедшее время для нескольких функций сна. Я использую либо time.sleep(), чтобы приостановить программу, либо psychopy.core.wait(), который, как говорят, более точен, и использую таймер высокого разрешения. Я тестирую последнее…

  • Почему time.clock() возвращает неправильный результат?

    Почему time.clock() дает неправильный результат? Код выглядит следующим образом: time_start1 = time.time() time.sleep(5) bb = time.time() — time_start1; print bb; time_1 = time.clock() time.sleep(5) cc = time.clock() — time_1 print cc Результаты таковы: 5.

    00506210327 0.006593 Второй должен быть…



5

Процессорное время означает то, что обычно называют CPU временем, то есть сколько работы процессор выполнил от имени текущего процесса. Это почти ничего, если вы спали всего 3 секунды.

Вместо этого используйте time.time() .

Поделиться Arndt Jonasson     28 апреля 2018 в 11:59



2

Как @decece цитируется из руководства, perf_counter() будет лучшим выбором здесь.

import time

start = time.perf_counter()
time.sleep(3)
end = time.perf_counter()

print(end-start) # 3.003116666999631

Если вы хотите протестировать arbritary-код, то timeit-модуль -хороший выбор:

import timeit
n = 4
print( timeit.timeit( "time.sleep(3)", setup="import time", number=n)/n) 

Выход:

3. 00312000513

Вы можете дать ему код setup= , который выполняется один раз, и позволить ему выполнить ваш исходный код number раза, получив общее время для всех выполнений с другими настройками по умолчанию.

Это усреднит тайминги, если вы снова разделите их на число , что сделает полученное время более надежным.

API: раз все


Ваши конкретные измерения для метода сна будут варьироваться, так как он в основном гарантирует ожидание «at least» заданного количества секунд, в зависимости от OS-перепланирования и прерываний это может занять больше времени:

Кроме того, время приостановки может быть больше, чем требуется на произвольную величину из-за планирования других действий в системе.

Изменено в версии 3.5: функция теперь спит не менее секунды, даже если сон прерывается сигналом, за исключением случаев, когда обработчик сигнала вызывает исключение (см. обоснование PEP 475).

Поделиться Patrick Artner     28 апреля 2018 в 11:55


Похожие вопросы:


time. clock() Python «против» time.time() точность?

Что лучше использовать для хронометража в Python? time.clock() или time.time()? Какой из них обеспечивает большую точность? например: start = time.clock() … do something elapsed = (time.clock() -…


time.clock() несколько раз в Python?

Используя Python 2.7.5 на Windows 7, у меня есть проблема. Я пишу программу, которая должна вычислять время, необходимое для вычисления нескольких математических алгоритмов. Я использую…


Python time.clock() против time.time() для синхронизации порожденного процесса

Я пытаюсь рассчитать время выполнения внешнего процесса, который я вызываю из python. Я хотел засечь время и увидел здесь , что time.clock() — это правильный путь. Однако я видел очень…


Python time.clock() результат не точен и далек

У меня есть следующий скрипт, с помощью которого я измеряю реальное прошедшее время для нескольких функций сна. Я использую либо time. sleep(), чтобы приостановить программу, либо…


Почему time.clock() возвращает неправильный результат?

Почему time.clock() дает неправильный результат? Код выглядит следующим образом: time_start1 = time.time() time.sleep(5) bb = time.time() — time_start1; print bb; time_1 = time.clock() time.sleep(5)…


time.clock(), нечетный результат при использовании внутри определения функции

Используя следующий код (Python 3.3.x, WinXp): ## debug function in a general/personal debug include file. def timer_compare(time1, time2=», note=’@’, time3=time.clock()): print(‘time1’,time1)…


Диапазон time.clock() в Python

Я использую Python 2.7.6 для измерения времени работы алгоритма: starting_time = time.clock() # run algorithm finishing_time = time.clock() running_time = (finishing_time — starting_time) Я запускаю…


путаница в измерении времени выполнения с time.clock()!

описание time. clock() : На Windows эта функция возвращает настенные часы секунд, прошедших с момента первого вызова этой функции, в виде числа с плавающей запятой, основанного на функции Win32…


Python: существенная разница между неделей time.time() и time.clock()?

Я пытаюсь проверить, сколько времени занимает блок кода обработки запроса http внутри моего контроллера flask, вот пример кода, который я использовал: cancelled = [] t0 = time.time() t1 =…


Python return время исполнения time.clock()

У меня есть следующий код, где я хочу измерить производительность времени. import time def fibonacci(n): t0 = time.clock() if n == 0: return 0 elif n == 1: return 1 else: a = fibonacci(n-1) b =…

python — Функция pygame.time.Clock () не работает в Ubuntu18.04

Я использую Ubuntu18.04. Я установил модуль pygame для воспроизведения песен. Но функция time.Clock () не работает. Это показывает следующую ошибку после запуска программы: AttributeError: у объекта ‘function’ нет атрибута ‘Clock’

Вот код:

def playSong(filename):
mixer. init()
mixer.music.load('/home/mjiabir/Music/rangamati songs/Roar.mp3')
mixer.music.play()
while mixer.music.get_busy:
    time.Clock.tick(10)
mixer.music.stop()

Похоже, Linux не поддерживает этот модуль. Что мне теперь делать?

0

Jawad Un Islam Abir 26 Июн 2020 в 21:33

2 ответа

Я думаю, что вы хотите использовать pygame.time.Clock().tick(10).

Один из способов поиска модулей пакета или подпакета — использовать dir(). Например:

# in a python interactive shell

import time
dir(time)
# output => ['CLOCK_BOOTTIME', 'CLOCK_MONOTONIC', 'CLOCK_MONOTONIC_RAW', 'CLOCK_PROCESS_CPUTIME_ID', 'CLOCK_REALTIME', 'CLOCK_THREAD_CPUTIME_ID', '_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'clock_getres', 'clock_gettime', 'clock_gettime_ns', 'clock_settime', 'clock_settime_ns', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'pthread_getcpuclockid', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname', 'tzset']

import pygame
dir(pygame. time)
# output => ['Clock', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'delay', 'get_ticks', 'set_timer', 'wait'] 

0

Fadi 26 Июн 2020 в 18:43

Хотя вы можете использовать pygame.time.Clock().tick(), я бы предложил создать объект Clock через clock = pygame.time.Clock() и clock.tick(). Как правило, хорошей практикой является использование объектно-ориентированной природы Python, а не непосредственного вызова методов конструирования.

0

bbnumber2 26 Июн 2020 в 18:48

62600892

Python | time.clock () метод — GeeksforGeeks

Python | time. clock () метод

Модуль времени в Python предоставляет различные функции, связанные со временем.

time.clock () Метод модуля времени в Python используется для получения текущего времени процессора в виде числа с плавающей запятой, выраженного в секундах.
As, Большинство функций, определенных в модуле времени, вызывают соответствующую функцию библиотеки C. time.clock () метод также вызывает функцию библиотеки C с тем же именем, чтобы получить результат. Точность возвращаемого значения с плавающей запятой зависит от вызываемой библиотечной функции C.

Примечание: Этот метод устарел, начиная с версии Python 3.3, и будет удален в версии Python 3.8. Поведение этого метода зависит от платформы.

Синтаксис: time.clock ()

Параметр: Параметр не требуется.


Тип возврата: Этот метод возвращает значение с плавающей запятой, которое представляет текущее время процессора в секундах.

Код # 1: Использование метода time.clock () для получения текущего времени процессора

импорт время

pro_time = раз.часы ()

print ( "Текущее время процессора (в секундах):" , pro_time)

Выход:
Текущее время процессора (в секундах): 0,042379
 

Код # 2: Использование метода time.clock () для получения текущего времени процессора

импорт время

def факториал (n):

f = 1

для i в диапазоне (n, 1 , - 1 ):

f = f * i

возврат f

начало = раз. часы ()

печать ( «В начале расчета» )

печать ( "Время процессора (в секундах):" , начало, "\ n" )

i = 0

факт = [ 0 ] * 10 ;

, а i < 10 :

факт [i] = факториал (i)

i = i + 1

для i в диапазоне ( 0 , len (факт)):

печать ( «Факториал% d:» % i, факт [i])

конец = раз. часы ()

печать ( "\ nВ конце расчета" )

печать ( "Время обработки (в секундах):" , конец)

печать ( "Время, прошедшее во время вычисления:" , конец - начало)

Выход:
В начале расчета
Время процессора (в секундах): 0.03451

Факториал 0: 1
Факториал 1: 1
Факториал 2: 2
Факториал 3: 6
Факториал из 4: 24
Факториал 5: 120
Факториал 6: 720
Факториал 7: 5040
Факториал 8: 40320
Факториал 9: 362880

В конце расчета
Время процессора (в секундах): 0,034715
Время, затраченное на расчет: 0,0002050000000000038
 

Ссылка: https://docs.python.org/3/library/time.html # time.clock

Внимание компьютерщик! Укрепите свои основы с помощью курса Python Programming Foundation и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS .

Расчет времени программы Python с использованием time.clock () vs. time.time ()

На этот вопрос уже есть ответы :

Закрыт 4 года назад.

Я новичок в программировании на Python. Я начал работать над Project Euler сегодня утром и хотел узнать, сколько времени потребуется на выполнение моего решения. Я искал в Интернете решение для своего

  время импорта

класс Решение (объект):
    def fibonacci (self, limit):
        сумма = 0
        ток = 1
        следующий = 2
        пока (текущий <= предел):
            если текущий% 2 == 0:
                сумма + = текущий
            текущий, следующий = следующий, текущий + следующий

        return str (сумма)

если __name__ == "__main__":
    начало = время. Часы()
    решение = Решение (). fibonacci (4000000)
    elapsed = time.clock () - начало
    print ("Решение:% s"% (решение))
    print ("Время:% s секунд"% (прошло))
  

Выход:
Решение: 4613732
Время: 2.006085436846098e-05 секунд


  время импорта

класс Решение (объект):
    def fibonacci (self, limit):
        сумма = 0
        ток = 1
        следующий = 2
        пока (текущий <= предел):
            если текущий% 2 == 0:
                сумма + = текущий
            текущий, следующий = следующий, текущий + следующий

        return str (сумма)

если __name__ == "__main__":
    начало = время.время()
    решение = Решение (). fibonacci (4000000)
    elapsed = time.time () - начало
    print ("Решение:% s"% (решение))
    print ("Время:% s секунд"% (прошло))
  

Вывод:
Решение: 4613732
Время: 0,0 секунды


Мой вопрос

  1. Правильно ли рассчитано время?
  2. В чем разница между time. time () и time.clock (). Если я использую time.time (), я получаю 0.0 как время.

Измерение времени в Python - время.время () против time.clock ()

Опубликовано: воскресенье, 27, -е, , января 2013 г.

Последнее обновление: 3 пятница rd май 2013

Прежде чем мы углубимся в различие в измерении времени в Python, необходимо понять различные типы времени в мире вычислений. Первый тип времени называется ЦП или временем выполнения, который измеряет, сколько времени ЦП потратил на выполнение программы. Второй тип времени называется временем настенных часов, который измеряет общее время выполнения программы на компьютере.Время настенных часов также называют прошедшим или текущим временем. По сравнению с временем ЦП время настенных часов часто больше, потому что ЦП, выполняющий измеряемую программу, может одновременно выполнять инструкции другой программы.

Еще одним важным понятием является так называемое системное время, которое измеряется системными часами. Системное время представляет собой представление компьютерной системы о течении времени. Следует помнить, что системные часы могут быть изменены операционной системой, таким образом изменяя системное время.

Модуль

Python time предоставляет различные функции, связанные со временем. Поскольку в большинстве случаев функции вызывают платформенно-зависимые функции библиотеки C с одинаковыми именами, семантика этих функций зависит от платформы.

Две полезные функции для измерения времени: time.time и time.clock . time.time возвращает время в секундах с начала эпохи, то есть точку, в которой время начинается. Для любой операционной системы вы всегда можете запустить время.gmtime (0), чтобы узнать, какая эпоха в данной системе. Для Unix эпохой является 1 января 1970 года. Для Windows эпохой является 1 января 1601 года. time.time часто используется для тестирования производительности программы в Windows. В то время как time.time ведет себя одинаково в Unix и Windows, time.clock имеет разное значение. В Unix time.clock возвращает текущее время процессора, выраженное в секундах, то есть время ЦП, необходимое для выполнения текущего потока на данный момент. В Windows он возвращает время настенных часов, выраженное в секундах, прошедшее с момента первого вызова этой функции, на основе функции Win32 QueryPerformanceCounter .Еще одно различие между time.time и time.clock заключается в том, что time.time может возвращать меньшее значение, чем предыдущий вызов, если системные часы были переведены назад между двумя вызовами, а time.clock всегда вернуть неубывающие значения.

Вот пример запуска time.time и time.clock на машине Unix:

# В ОС на базе Unix

>>> import time

>>> print (time. time (), time.clock ())

13552.31 0,021184

>>> time.sleep (1)

>>> print (time.time (), time.clock ())

13553.31 0,02168

time.time () показывает, что время настенных часов прошло примерно одну секунду, а time.clock () показывает, что время ЦП, затраченное на текущий процесс, меньше 1 микросекунды. time.clock () имеет гораздо более высокую точность, чем time.время () .

Запуск той же программы под Windows дает совершенно разные результаты:

В Windows

>>> import time

>>> print (time.time (), time.clock ())

13563.02 4.95873078841e-06

>>> time.sleep (1)

>>> print (time.time (), time.clock ())

13564.04 1.01088769662

Как time.time () , так и time. clock () показывают, что время настенных часов прошло приблизительно одну секунду. В отличие от Unix, time.clock () не возвращает время процессора, вместо этого он возвращает время настенных часов с более высокой точностью, чем time.time () .

Учитывая зависящее от платформы поведение time.time () и time.clock () , какой из них мы должны использовать для измерения «точной» производительности программы? Смотря как.Если ожидается, что программа будет работать в системе, которая почти выделяет больше чем достаточно ресурсов для программы, то есть на выделенном веб-сервере, на котором запущено веб-приложение на основе Python, тогда измерение программы с помощью time.clock () имеет смысл, поскольку веб-приложение, вероятно, будет основной программой, работающей на сервере. Если предполагается, что программа будет работать в системе, которая одновременно запускает множество других программ, то измерение программы с использованием time. 2, range (1000)) '

10000 циклов, лучшее из 3: 145 мксек на цикл

# в Windows

C: \ Python27> питон.2, диапазон (1000)) "

10000 циклов, лучшее из 3: 109 мксек на цикл

в режиме ожидания

>>> import timeit

>>> total_time = timeit.timeit ('[v for v in range (10000)]', number = 10000)

>>> print (total_time)

3.60528302192688 # total wall -clock время выполнения оператора 10000 раз

>>> print (total_time / 10000)

0.00036052830219268796 # среднее время на цикл

>>> total_time = timeit.timeit ('[v for v in range (10000)]', number = 10000)

>>> print (total_time)

3.786295175552368 # total wall- время блокировки для выполнения инструкции 10000 раз

>>> print (total_time / 10000)

0.0003786295175552368 # среднее время на цикл

Какой таймер использует timeit ? Согласно исходному коду timeit , он использует лучший из доступных таймер:

import sys

if sys. platform == 'win32':

# В Windows лучший таймер - time.clock

default_timer = time.clock

else:

# На большинстве других платформ лучший таймер - time.time

default_timer = time .time

Другой важный механизм timeit заключается в том, что он отключает сборщик мусора во время выполнения, как показано в следующем коде:

импорт gc

gcold = gc.isenabled ()

gc.disable ()

try:

time = self.inner (it, self.timer)

finally:

if gcold:

gc.enable ()

Если необходимо включить сборку мусора для более точного измерения производительности программы, т. Е. Когда программа выделяет и освобождает много объектов, тогда вы должны включить ее во время установки:

>>> timeit.timeit ("[v для v в диапазоне (10000)]", setup = "gc. enable ()", number = 10000)

3.6051759719848633

За исключением очень особых случаев, вы всегда должны использовать модуль timeit для тестирования программы. Кроме того, важно помнить, что измерение производительности программы всегда зависит от контекста, поскольку ни одна программа не выполняется в системе с безграничными вычислительными ресурсами, а среднее время, измеренное по количеству циклов, всегда лучше, чем одно время, измеренное в одна казнь.

Руководство для начинающих по модулю времени Python - Real Python