Python代码运行时间测试的四种常用方法
本文详细介绍Python中测试代码运行速度的四种常用方法。通过time模块手动计算时间戳差值、IPython的%time魔法命令、多次执行取平均值的%timeit命令,以及timeit模块的timeit()函数。文章对比了各方法的准确性与适用场景,帮助开发者选择最适合的性能测试工具。
为了提升代码执行效率,对编写的Python代码进行性能测试至关重要,而衡量代码性能最直观的指标便是程序运行所消耗的时间。
本文将介绍四种在Python中常用的测试代码运行速度的方法。
第一种方法
利用time模块统计代码的运行时间,具体实现代码如下:
import time
class Debug:
def mainProgram(self):
start_time = time.time()
for i in range(100):
print(i)
end_time = time.time()
print(f"the running time is: {end_time - start_time} s")
if __name__ == "__main__":
main = Debug()
main.mainProgram()通过time模块在待测代码的前后分别添加时间戳,分别标记为start_time和end_time,最终代码块的运行时间即为end_time减去start_time的结果,单位是秒(s)。
Python中还有其他记录时间的模块,此处不再赘述,它们的实现思路与time模块类似,代码实现也大同小异。
第二种方法
使用IPython内置的魔法命令%time,具体代码如下:
class Debug:
def mainProgram(self):
%time for i in range(100): print(i)
main = Debug()
main.mainProgram()
"""
Wall time: 1.99 ms
"""上述类定义可以省略,不影响最终结果。在%time后跟上待计算时间的代码,编译器会在运行后自动输出测试代码的运行时间。然而经过测试,%time方法测得的时间并不准确,波动范围较大。这很容易理解,因为计算机每时每刻都在处理各种进程,运行状态时刻变化,因此在不同时刻测试同一段代码会得到不同的结果。
第三种方法
使用IPython的另一个内置魔法命令%timeit,其使用方法与%time类似,具体代码如下:
class Debug:
def mainProgram(self):
%timeit for i in range(100): print(i)
main = Debug()
main.mainProgram()
"""
8.53 ms ± 452 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
"""从输出结果可以看到:每个循环8.53 ms±452 µs(平均±标准偏差,共运行7次,每个循环100个)。与%time相比,%timeit会多次执行测试代码,并取它们运行时间的平均值,同时计算出标准差。因此,这种计算方法的结果比仅执行一次测试代码的%time方法更为准确。
第四种方法
导入timeit模块来计算代码块的执行时间
import timeit
class Debug:
def mainProgram(self):
result = timeit.timeit(stmt="for i in range(100): print(i)", number=10)
print(result)
main = Debug()
main.mainProgram()
"""
0.05363089999991644 s
"""导入timeit模块后,使用timeit.timeit()来测试目标代码。代码以字符串形式输入,并需设定number值,指定该段代码需要执行的次数。最终得到的结果是0.05363089999991644,单位是秒(s)。与内置魔法方法%timeit不同的是,虽然两者都进行多次计算,但timeit.timeit()最终获取的时间是n次执行代码所需的总时间,而非单次执行的时间。
至此,关于代码运行速度测试方法的介绍暂时告一段落。
此外,还有一种进阶操作可用于测试脚本文件的性能,即Python脚本性能分析(点击超链接跳转)。
以上为个人经验总结,希望能给大家提供参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













