Python 函数计时时如何使用timeit

Python 函数计时时如何使用timeit,python,timeit,Python,Timeit,让我首先说我对python几乎一无所知,但必须用三种不同的语言编写一个程序(已经用java和c++完成了) 我需要能够对一个方法的执行计时一定的次数,然后打印整个执行时间所花费的时间 即 我有一个函数A(它是performSearch(arrayTest),其中arrayTest是一个已知大小的数组)执行10次 我需要能够计算从执行A之前到执行A之后所用的时间。您可以阅读如何使用timeit 假设您在运行时间相同的文件中有一个名为performSearch的函数,则可以使用下面的函数 impor

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

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

我有一个函数
A
(它是
performSearch(arrayTest)
,其中
arrayTest
是一个已知大小的数组)<代码>执行10次


我需要能够计算从执行
A
之前到执行
A
之后所用的时间。

您可以阅读如何使用timeit

假设您在运行时间相同的文件中有一个名为performSearch的函数,则可以使用下面的函数

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

你可以这样做:

import time

start = time.time()
A()
end = time.time()
print "Took %f ms" % ((end - start) * 1000.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

是的,好吧,等一下


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

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网站上有更多的例子。

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

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

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

如您所见,单位为微秒。

您已经完美地描述了您的情况。你的问题是什么?我发现一个语法错误。这是完整的代码+你说的使用performSearch是你的函数不是函数更改
从uuu main uu导入函数,arrayTest
从uuu main uuuu导入performSearch,arrayTest
当我说functionA时,我是泛型的,希望不需要我的全部代码,我可以理解,你所需要做的就是在我的文件中更改表示function to performSearch的位。这是一种更干净、更好的方法,同时实现几乎相同的结果(至少在我的例子中是这样)。timeit使用更精确的计数器,具有执行多个测量的功能,并且默认情况下关闭垃圾收集
10000 loops, best of 3: 22.9 µs per loop