阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

简单介绍python中的代码运行时间获取方式

27次阅读
没有评论

共计 1731 个字符,预计需要花费 5 分钟才能阅读完成。

导读 这篇文章主要介绍了 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 次执行代码所需的总时间而不是执行一次的时间。

至此,代码的运行速度测试方法的介绍暂时告一段落。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1731字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中