时间python功能

时间:2014-11-23 14:11:12

标签: python timeit

(Python 2.7.8,Windows)

关于这个特定主题已经有很多问题,但我似乎无法让它们中的任何一个起作用。

所以,我想要完成的是计算函数执行所需的时间。

我有以下方式的functions.py和main.py:

#functions.py
def function(list):
    does something
    return list
...

#main.py
import functions
...stuff...
while:
    list = gets list from file
    functions.function(list) <--- this needs to get timed

现在我先尝试time.time()起点和终点,但它不够准确(差异往往是0.0),经过一些谷歌搜索后似乎不是这样的无论如何要去。显然我应该使用(?)是timeit模块。但是我无法理解如何将功能融入其中。

任何帮助?

3 个答案:

答案 0 :(得分:2)

正如您所提到的,为此任务创建了一个Python模块timeit。它的语法虽然有点特殊,但却很容易理解:

timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=1000000)

stmt是要测量的函数调用,在您的情况下:functions.function(list)

setup是您创建stmt执行所需的上下文所需的代码,在您的情况下:import functions; list = gets list from file

numbertimeit运行stmt以查找其平均执行时间的时间。您可能想要更改数字,因为调用您的函数一百万次可能需要一段时间。

TL; DR:

timeit.timeit(stmt='functions.function(list)', setup='import functions; list = gets list from file', number=100)

答案 1 :(得分:0)

start = timeit.default_timer()
my_function()
elapsed = timeit.default_timer() - start

答案 2 :(得分:0)

您会看到此演示:time.time

>>> def check(n):
...     start = time.time()
...     for x in range(n):
...         pass     
...     stop = time.time()
...     return stop-start
... 
>>> check(1000)
0.0001239776611328125
>>> check(10000)
0.0012159347534179688
>>> check(100)
1.71661376953125e-05

上面的函数在n次循环中以秒为单位返回hum。

所以算法是:

start = time.time()
# your stuff
stop = time.time()
time_taken = stop - start