time.clock () не возвращает время должным образом

Этот код:

import time

now = time.clock()
while now + 5 > time.clock():
    print time.clock()
    time.sleep(1)
    print "Woke up"

возвращает:

0.015718
Woke up
0.015814
Woke up
0.015942
Woke up
0.016107
Woke up
0.01625
Woke up
0.016363

Как вы можете видеть, возвращаемое время, похоже, не возвращает истекшее время с секундами, представленными в виде целых чисел, хотя это то, что говорится в документации. Что здесь не так?

РЕДАКТИРОВАТЬ: я на Mac OS X El Capitan


person Sahand    schedule 09.05.2016    source источник
comment
docs.python.org/3/library/time.html#time. часы   -  person user3159253    schedule 09.05.2016
comment
Цитата из документа: в Unix вернуть текущее время процессора в виде числа с плавающей запятой, выраженного в секундах. Точность и, по сути, само определение значения «процессорного времени» зависит от одноименной функции Си.   -  person user3159253    schedule 09.05.2016
comment
На какой ОС вы работаете?   -  person Neo    schedule 09.05.2016
comment
Смотрите мою правку. Что касается документа, он по-прежнему говорит, что он должен быть выражен в секундах, что здесь не так.   -  person Sahand    schedule 09.05.2016
comment
В документации указано, что он возвращает число с плавающей запятой, а не целое: ... как число с плавающей запятой .... Оно выражается в секундах, это время использования ЦП, а не затраченное время ЦП, функция sleep () не использует Процессорное время. Вероятно, вы ищете time.time (), который возвращает истекшее время.   -  person João Pinto    schedule 09.05.2016
comment
связанные: Измерять прошедшее время в Python?   -  person jfs    schedule 10.05.2016


Ответы (2)


Вероятно, вам стоит прочитать руководство:

В Unix вернуть текущее время процессора в виде числа с плавающей запятой, выраженного в секундах. Точность и, фактически, само определение значения «процессорного времени» зависит от функции C с тем же именем, но в любом случае это функция, которую нужно использовать для тестирования Python или алгоритмов синхронизации. В Windows эта функция возвращает часы настенных часов, прошедшие с момента первого вызова этой функции, в виде числа с плавающей запятой на основе функции Win32 QueryPerformanceCounter (). Разрешение обычно лучше одной микросекунды.

Предполагается, что вы используете UNIX (fx Linux или iOS), поведение правильное. time.clock возвращает количество процессорного времени, израсходованного процессом, во время сна вы не потребляете процессорного времени.

Конечно, разница между UNIX и Windows делает эту функцию бесполезной, если вы не обнаружите, какое поведение действует, и не действуете соответствующим образом.

person skyking    schedule 09.05.2016

Исходя из шаблона, это может помочь. time.clock () предоставит вам время обработки, а time.time () - now_time () покажет, сколько секунд прошло каждый раз. sleep (1)

import time
now = time.clock()
now_time = time.time()
while now + 5 > time.clock():
    print time.time() - now_time + time.clock()
    time.sleep(1)
    print "Woke up"
person KitoKunX    schedule 09.05.2016