time模块
在代码执行前后各记录一个时间点,两个时间戳相减即程序运行耗时。这种方式虽然简单,但使用起来比较麻烦。
time.time()
函数返回的时间是相对于1970年1月1日的秒数
import time
start = time.time()
time.sleep(1)
end = time.time()
print(f"耗时: {end - start}秒")
输出:
耗时: 1.012192964553833秒
time.perf_counter()
函数用于获取当前时间的精确计时器值,通常用于测量程序的执行时间。
import time
start = time.perf_counter()
time.sleep(1)
end = time.perf_counter()
print(f"耗时: {end - start}秒")
输出:
耗时: 0.998019699996803秒
区别与应用
time() 函数返回的时间是相对于1970年1月1日的秒数,而 perf_counter() 函数返回的是CPU时钟计数值,单位是秒。
time() 函数的精度通常是1秒,而 perf_counter() 函数的精度通常是纳秒级别。
time() 函数的返回值可以被修改,而 perf_counter() 函数的返回值不能被修改。
因此,如果需要测量程序的执行时间,建议使用perf_counter()函数。
timeit模块
timeit是Python标准库内置的小工具,可以快速测试小段代码的性能。可以在命令行界面直接使用,也可以通过导入模块进行调用
timeit 函数:
timeit.timeit(stmt, setup,timer, number)
参数说明:
- stmt: statement的缩写,你要测试的代码或者语句,纯文本,默认值是 “pass”
- setup: 在运行
stmt
前的配置语句,纯文本,默认值也是 “pass” - timer: 计时器,一般忽略这个参数
- number:
stmt
执行的次数,默认是1000000,一百万
repeat 函数:
timeit.repeat(stmt, setup, timer, repeat, number)
是timeit的repeat版,可以指定重复timeit的次数,默认是5次,然后返回一个数组。
举一个简单的例子来说明用法:
import timeit
print(timeit.timeit('output = 10*5'))
# 0.014560436829924583
print(timeit.repeat('output = 10*5'))
# [0.012098299994249828, 0.012399200000800192, 0.012346500006970018, 0.012961999993422069, 0.012330500001553446]
查看原文:Python代码耗时统计
关注公众号 "字节航海家" 及时获取最新内容