定时功能时如何使用timeit

时间:2013-09-25 16:49:44

标签: python timeit

首先让我说我对python几乎一无所知,但必须用三种不同的语言编写程序(已经用java和c ++编写)。

我需要能够将方法的执行次数计算一定次数,然后打印整个执行时间所花费的时间。

我有函数AperformSearch(arrayTest)arrayTest是已知大小的数组。 A执行10次

我需要能够计算执行A之前到A执行之后花了多长时间。

5 个答案:

答案 0 :(得分:7)

您可以阅读如何使用timeit here

假设您在同一个文件中有一个名为performSearch的函数,那么您运行的timeit将起作用。

import timeit

def performSearch(array):
    array.sort()


arrayTest = ["X"]*1000

if __name__ == "__main__":
    print timeit.timeit("performSearch(arrayTest)","from __main__ import performSearch, arrayTest",number=10)

返回:

0.000162031766607

答案 1 :(得分:4)

你可以这样做:

import time

start = time.time()
A()
end = time.time()
print "Took %f ms" % ((end - start) * 1000.0)

答案 2 :(得分:1)

您可以使用以下代码作为示例:

import timeit

def string_generator(size):
    return (size/8) * "ABCDEFGH"

if __name__ == "__main__":
    #the below line runs the statement inside of '' for 100 times (number).
    print timeit.timeit('"-".join(str(n) for n in range(100))',number=100)
    #the below line runs the statement inside of '' for 10 times (number) and repeat it 3 times.
    print timeit.repeat('"-".join(str(n) for n in range(100))',repeat=3,number=10)
    #if you would like to time a function, you can do it similar to below example:
    print timeit.timeit("string_generator(2**12)", setup="from __main__ import string_generator")

结果是:

0.00784516334534
[0.0009770393371582031, 0.00036597251892089844, 0.00037407875061035156]
0.414484977722

结果的单位是秒。 python网站上有更多的例子。 enter link description here

你也可以使用ipython。下面列出了相同的例子。

In [25]: %timeit "-".join(str(n) for n in range(100))

结果是:

10000 loops, best of 3: 22.9 µs per loop

如您所见,该单位是宏观第二​​。

答案 3 :(得分:0)

如果你想要更简单的东西

import time
startMillis = int(round(time.time() * 1000))
print startMillis
time.sleep(5) # this is your function that takes time to execute
endMillis = int(round(time.time() * 1000))
print endMillis

timeTaken = endMillis - startMillis

答案 4 :(得分:0)

是的,只是时间。

total= 0
for i in range(1000):
    start= time.clock()
    function()
    end= time.clock()
    total += end-start
time= total/1000