在Python中使用哪个更好?Time.clock()还是time.time()?哪一种更准确?
例如:
start = time.clock()
... do something
elapsed = (time.clock() - start)
vs.
start = time.time()
... do something
elapsed = (time.time() - start)
在Python中使用哪个更好?Time.clock()还是time.time()?哪一种更准确?
例如:
start = time.clock()
... do something
elapsed = (time.clock() - start)
vs.
start = time.time()
... do something
elapsed = (time.time() - start)
当前回答
对比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
其他回答
正如其他人所注意到的,time.clock()已被弃用,取而代之的是time.perf_counter()或time.process_time(),但Python 3.7通过time.perf_counter_ns()、time.process_time_ns()和time.time_ns()以及其他3个函数引入了纳秒分辨率计时。
PEP 564中详细介绍了这6个新的纳秒分辨率函数:
time.clock_gettime_ns (clock_id) 时间。clock_settime_ns (clock_id、时间:int) time.monotonic_ns () time.perf_counter_ns () time.process_time_ns () time.time_ns () 这些函数类似于没有_ns后缀的版本,但是 返回一个纳秒数作为Python int。
正如其他人也注意到的那样,使用timeit模块为函数和小代码段计时。
在Linux上,time()比clock()具有更好的精度。Clock()的精度小于10毫秒。而time()提供完美的精度。 我的测试用的是CentOS 6.4和python 2.6
using time():
1 requests, response time: 14.1749382019 ms
2 requests, response time: 8.01301002502 ms
3 requests, response time: 8.01491737366 ms
4 requests, response time: 8.41021537781 ms
5 requests, response time: 8.38804244995 ms
使用时钟():
1 requests, response time: 10.0 ms
2 requests, response time: 0.0 ms
3 requests, response time: 0.0 ms
4 requests, response time: 10.0 ms
5 requests, response time: 0.0 ms
6 requests, response time: 0.0 ms
7 requests, response time: 0.0 ms
8 requests, response time: 0.0 ms
简单回答:在Python中使用time.clock()进行计时。
在*nix系统上,clock()返回处理器时间为浮点数,以秒表示。在Windows上,它以浮点数的形式返回自第一次调用此函数以来所经过的秒数。
time()返回自纪元以来的秒数,以UTC为单位,作为浮点数。不能保证您将获得比1秒更好的精度(即使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()是内部计数器,所以不能在外部使用,得到限制最大32位浮点数,如果不存储第一个/最后一个值,就不能继续计数。不能合并另一个计数器…
据我所知,time.clock()具有系统所允许的最大精度。