Python time.clock () против точности time.time ()? - PullRequest
410 голосов
/ 17 сентября 2008

Что лучше использовать для синхронизации в Python? time.clock () или time.time ()? Какой из них обеспечивает большую точность?

например:

start = time.clock()
... do something
elapsed = (time.clock() - start)

против

start = time.time()
... do something
elapsed = (time.time() - start)

Ответы [ 16 ]

2 голосов
/ 11 марта 2016

Я использую этот код для сравнения 2 методов. Моя ОС - Windows 8, процессорное ядро ​​i5, ОЗУ 4 ГБ

import time

def t_time():
    start=time.time()
    time.sleep(0.1)
    return (time.time()-start)


def t_clock():
    start=time.clock()
    time.sleep(0.1)
    return (time.clock()-start)




counter_time=0
counter_clock=0

for i in range(1,100):
    counter_time += t_time()

    for i in range(1,100):
        counter_clock += t_clock()

print "time() =",counter_time/100
print "clock() =",counter_clock/100

выход:

время () = 0,0993799996376

clock () = 0.0993572257367

2 голосов
/ 18 сентября 2008

Насколько я понимаю, time.clock () имеет столько точности, сколько позволяет ваша система.

2 голосов
/ 17 сентября 2008

Краткий ответ: используйте time.clock () для синхронизации в Python.

В * nix-системах clock () возвращает время процессора в виде числа с плавающей запятой, выраженного в секундах. В Windows он возвращает секунды, прошедшие с момента первого вызова этой функции, в виде числа с плавающей запятой.

time () возвращает количество секунд с начала эпохи в формате UTC в виде числа с плавающей запятой. Нет гарантии, что вы получите лучшую точность, чем 1 секунда (хотя time () возвращает число с плавающей запятой). Также обратите внимание, что если системные часы были установлены обратно между двумя вызовами этой функции, второй вызов функции вернет меньшее значение.

1 голос
/ 18 ноября 2016

Правильный ответ: Они оба имеют одинаковую длину дроби.

Но что быстрее, если subject равно time?

Небольшой тестовый кейс :

import timeit
import time

clock_list = []
time_list = []

test1 = """
def test(v=time.clock()):
    s = time.clock() - v
"""

test2 = """
def test(v=time.time()):
    s = time.time() - v
"""
def test_it(Range) :
    for i in range(Range) :
        clk = timeit.timeit(test1, number=10000)
        clock_list.append(clk)
        tml = timeit.timeit(test2, number=10000)
        time_list.append(tml)

test_it(100)

print "Clock Min: %f Max: %f Average: %f" %(min(clock_list), max(clock_list), sum(clock_list)/float(len(clock_list)))
print "Time  Min: %f Max: %f Average: %f" %(min(time_list), max(time_list), sum(time_list)/float(len(time_list)))

Я не работаю в швейцарских лабораториях, но я проверял ..

На основании этого вопроса: time.clock() лучше, чем time.time()

Редактировать: time.clock() является внутренним счетчиком, поэтому не может использоваться снаружи, получил ограничения max 32BIT FLOAT, не может продолжать счет, если не сохранить первые / последние значения. Не могу объединить еще один счетчик ...

0 голосов
/ 27 января 2014

Сравнение результатов теста между Ubuntu Linux и Windows 7.

В Ubuntu

>>> start = time.time(); time.sleep(0.5); (time.time() - start)
0.5005500316619873

В Windows 7

>>> start = time.time(); time.sleep(0.5); (time.time() - start)
0.5
0 голосов
/ 23 февраля 2011

Используйте time.time () предпочтительнее.

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