在 Python 中,你可以使用 time
模块或 timeit
模块来计算代码的执行时间。time
模块提供了基本的时间测量功能,而 timeit
模块则专门用于更精确地测量小段代码的执行时间,特别是那些执行时间非常短的代码。
对于一般用途,time
模块中的 time()
或 perf_counter()
函数通常足够精确。perf_counter()
提供了比 time()
更高的精度和更低的系统抖动,因此通常更受欢迎。
以下是一个使用 time.perf_counter()
来测量代码执行时间的示例:
import time
# 要测量的代码块
def code_to_measure():
# 这里放置你的代码,例如:
total = 0
for i in range(1000000):
total += i
return total
# 记录开始时间
start_time = time.perf_counter()
# 执行代码块
result = code_to_measure()
# 记录结束时间
end_time = time.perf_counter()
# 计算执行时间
elapsed_time = end_time - start_time
print(f"代码执行时间: {elapsed_time:.10f} 秒") # 使用 .10f 来格式化输出到小数点后10位
print(f"代码执行结果: {result}")
在这个示例中,code_to_measure()
函数包含了你想要测量执行时间的代码。time.perf_counter()
在代码执行前后被调用,以记录开始和结束时间。然后,通过计算这两个时间点的差值,我们得到了代码块的执行时间。
请注意,由于计算机的多任务处理能力和操作系统的调度机制,即使使用 perf_counter()
,单次测量的结果也可能会有一定的波动。如果你需要更精确的结果,可以考虑多次运行代码块并计算平均执行时间,或者使用 timeit
模块进行更专业的测量。
timeit
模块的使用示例如下:
import timeit
# 要测量的代码块,作为字符串传递给 timeit.timeit()
code_to_measure = """
total = 0
for i in range(1000000):
total += i
"""
# 使用 timeit 测量执行时间,number 参数指定代码块执行的次数
elapsed_time = timeit.timeit(code_to_measure, number=10) # 这里我们测量 10 次的平均时间
# 计算单次执行的平均时间
average_time_per_run = elapsed_time / 10
print(f"代码执行时间(单次平均): {average_time_per_run:.10f} 秒")
在这个示例中,timeit.timeit()
函数接受一个包含要测量代码的字符串,以及一个 number
参数,该参数指定代码块应该被执行的次数。然后,它返回总执行时间,你可以通过除以 number
来计算单次执行的平均时间。