(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
模块。但是我无法理解如何将功能融入其中。
任何帮助?
答案 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
number
是timeit
运行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