python: 测量代码运行时间
python 测量代码运行所需时间
·
测量代码运行所需时间主要有两种方法,使用 time.time()
,这是通用的方法,或者使用 timeit.timeit()
测量小的代码段。
1 time()
这是通用方法:
import time
def powers(limit):
return [x**2 for x in range(limit)]
start = time.time()
powers(5000000)
end = time.time()
print(end-start) # 1.0257349014282227 (秒)
或者将测量时间的相关代码放到一个高阶函数 measure_runtime
中,接受函数作为参数,可以测量任意函数运行所需时间:
import time
def measure_runtime(func):
time_start = time.time()
func()
time_end = time.time()
print(time_end - time_start)
def powers(limit):
return [x**2 for x in range(limit)]
measure_runtime(lambda: powers(5000000)) # 1.006134033203125 秒
2 timeit()
此函数用于测量小的代码段运行所需时间:
此函数有5个参数:
timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=1000000, globals=None)
timeit.timeit(stmt='', setup='', timer=time.perf_counter, number=1000000, globals=None)
stmt
是待测代码段,setup
作用类似于初始化代码段中变量,在 stmt
之前执行,number
如果不设置,那么 stmt
默认执行1000000
即一百万次,如果 stmt
执行一次需要 1 秒,一百万秒是非常长的时间,所以 number
参数一般应该设置。
用法:
import timeit
print(timeit.timeit("[x**2 for x in range(5000000)]", number=4))
print(timeit.timeit("list(map(lambda x: x**2, range(100)))", setup="", number=10000))
print(timeit.timeit(stmt='while x < 1000000: x += 1', setup='x = 0', number = 10000))
运行结果:
4.101922899999408 # number = 4, 测了4 次,共用了4 秒
0.23630119999870658
0.03228399999898102
timeit.timeit()
除以 number
, 将得到 stmt
执行一次所需的平均时间。
更多推荐
已为社区贡献5条内容
所有评论(0)