python中的代码运行时间获取方式

 更新时间:2022年11月03日 11:08:09   作者:勤奋的大熊猫  
这篇文章主要介绍了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 脚本性能分析(超链接点击跳转)。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于Python包导入报错的问题总结

    关于Python包导入报错的问题总结

    这篇文章主要介绍了关于Python包导入报错的问题总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • python爬取之json、pickle与shelve库的深入讲解

    python爬取之json、pickle与shelve库的深入讲解

    这篇文章主要给大家介绍了关于python爬取之json、pickle与shelve库的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • python中session的使用案例详解

    python中session的使用案例详解

    这篇文章主要介绍了python session使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • python write无法写入文件的解决方法

    python write无法写入文件的解决方法

    今天小编就为大家分享一篇python write无法写入文件的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python SMTP配置参数并发送邮件

    Python SMTP配置参数并发送邮件

    这篇文章主要介绍了Python SMTP配置参数并发送邮件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Python利用pyodbc库将文件信息插入Access数据库

    Python利用pyodbc库将文件信息插入Access数据库

    在日常编程工作中,我们经常需要处理文件和文件夹,所以本文将介绍如何使用Python编程语言和wxPython库创建一个简单的文件浏览器界面,使用户能够选择文件夹并将文件信息插入到Access数据库中,需要的可以参考下
    2023-08-08
  • pandas数据清洗,排序,索引设置,数据选取方法

    pandas数据清洗,排序,索引设置,数据选取方法

    下面小编就为大家分享一篇pandas数据清洗,排序,索引设置,数据选取方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • django配置连接数据库及原生sql语句的使用方法

    django配置连接数据库及原生sql语句的使用方法

    这篇文章主要给大家介绍了关于django配置连接数据库,以及原生sql语句的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • 5行Python代码实现图像分割的步骤详解

    5行Python代码实现图像分割的步骤详解

    这篇文章主要介绍了5行Python代码实现图像分割的步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 解决pytorch 的state_dict()拷贝问题

    解决pytorch 的state_dict()拷贝问题

    这篇文章主要介绍了解决pytorch 的state_dict()拷贝问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论