0
点赞
收藏
分享

微信扫一扫

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​​​的​​Built-in magic commands​​​,​​%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​​​的另一个​​Built-in magic commands​​​,​​%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个)​​%timeit​​​相比于​​%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()​​​来测试想要测试的代码,并且代码以​​string​​​的形式进行输入,并且需要设定​​number​​​值,设定测试的该段代码需要执行的次数,最终我们得到​​0.05363089999991644​​​,单位是​​s(秒)​​​,与内置魔法方法​​%timeit​​​方法不同的是虽然也是多次计算,但是最终获取的时间是​​n​​​次执行代码所需的总时间而不是执行一次的时间。
至此,代码的运行速度测试方法的介绍暂时告一段落。

当然,还有一种进阶操作可以用来测试脚本文件的性能,​​python 脚本性能分析​​(超链接点击跳转)。


举报

相关推荐

0 条评论