python 代码运行时间获取方式详解

作者:勤奋的小乌贼 时间:2021-01-22 19:07:36 

我们知道为了提高代码的运行速度,我们需要对书写的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 代码运行时间 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://blog.csdn.net/u011699626/article/details/108591752

标签:python,代码运行时间
0
投稿

猜你喜欢

  • MySQL权限分配

    2011-01-29 16:37:00
  • Python在线和离线安装第三方库的方法

    2023-08-24 19:37:11
  • ASP中遍历和操作Application对象的集合

    2007-09-13 12:45:00
  • 得到字符串真实长度和取固定长度的字符串函数

    2008-10-06 13:12:00
  • Python的Bottle框架的一些使用技巧介绍

    2022-11-10 08:05:35
  • ASP(JScript)构建SQL语句“类”

    2008-04-30 07:12:00
  • 关于ASP代码的加密

    2007-10-15 12:30:00
  • asp如何生成XML数据

    2007-08-20 09:50:00
  • Python 实现12306登录功能实例代码

    2021-04-07 08:55:35
  • 去除新云CMS文章列表前的小圆点

    2008-09-27 13:36:00
  • Python绘制1000响大地红鞭炮动态效果

    2021-08-21 20:44:26
  • VMware中linux环境下oracle安装图文教程(二)ORACLE 10.2.05版本的升级补丁安装

    2023-07-22 11:37:11
  • Java动态-代理实现AOP

    2023-07-15 09:33:43
  • python快排算法详解

    2023-08-24 04:17:08
  • 用"表情符号"做植入广告 是否可行呢?

    2009-02-23 13:07:00
  • 三种SQL分页查询的存储过程代码

    2012-01-05 19:31:32
  • 修改mysql最大连接数的方法

    2010-03-09 13:57:00
  • [ASP]利用 xmlhttp 分块上传文件

    2008-07-04 14:14:00
  • [JS效果]动画效果打开/关闭/移动层

    2008-04-10 11:42:00
  • 正视WEB标准,一本全面的标准参考书

    2009-05-30 16:36:00
  • asp之家 网络编程 m.aspxhome.com