在用Python编写程序时经常会遇到需要求解一个函数运行时间的情况,在做CS231n作业的时候,发现一个利用Python语言特性编写的比较巧妙的计算方法,这里记录和大家分享一下:
def time_function(f, *args):
"""
Call a function f with args and return the time (in seconds) that
it took to execute.
"""
import time
tic = time.time()
f(*args)
toc = time.time()
return toc - tic
代码如上,只有几行,当实现了很好的封装和可用性。这里主要是用了Python中的可变参数和函数特性(函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:)。
f是一个指向函数对象的引用别名;*args表示任何多个无名参数,它是一个tuple。
应用如下:
def time_function(f, *args):
"""
Call a function f with args and return the time (in seconds) that
it took to execute.
"""
import time
tic = time.time()
f(*args)
toc = time.time()
return toc - tic
def addition(a, b, c):
return a + b + c
def subtract(a, b):
return a - b
add_time_cost = time_function(addition, 3, 4, 5)
sub_time_cost = time_function(subtract, 3, 4)
print('add_time_cost:', add_time_cost)
print('sub_time_cost:', sub_time_cost)
857

被折叠的 条评论
为什么被折叠?



