测量python中的代码时序。我错了什么?

时间:2017-03-01 06:19:30

标签: python time

import time
s = time.time()
def insertionSort(alist):
    for index in range(1, len(alist)):

        currentvalue = alist[index]
        position = index

        while position > 0 and alist[position - 1] > currentvalue:
            alist[position] = alist[position - 1]
            position = position - 1

        alist[position] = currentvalue
alist = [54,26,93,17,77,31,44,55,20]
insertionSort(alist)
print (time.time() - s) # Result 0.0

我查找时间模块,但是作为新手阅读它我很难。我已经在搜索答案,它会衡量代码的开始和代码的结束。结果是0.0。请帮帮我。

1 个答案:

答案 0 :(得分:1)

使用time.time的方式没有任何问题。

打印0.0的原因是代码运行得如此之快,以至于计时器根本没有改变。

为了说明我的观点,我已将代码循环了1000次。

import time
s = time.time()
def insertionSort(alist):
    for index in range(1, len(alist)):

        currentvalue = alist[index]
        position = index

        while position > 0 and alist[position - 1] > currentvalue:
            alist[position] = alist[position - 1]
            position = position - 1

        alist[position] = currentvalue
for x in xrange(1000):
    insertionSort([54,26,93,17,77,31,44,55,20])
e = time.time()
print (e - s) 

输出:

0.00600004196167

如果您对代码性能感兴趣,可以使用一个名为timeit的多路库,这对于这种情况很有用。

import timeit
t = timeit.Timer("insertionSort([54,26,93,17,77,31,44,55,20])", "from __main__ import insertionSort")
time = t.timeit(1000)
print(time)

输出:

0.00587430725292