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


猜你喜欢
- 环境:Ubuntu16.4 python版本:3.6.4 库:wordcloud这次我们要讲的是爬取QQ音乐的评论并制成云词图,我们这里拿周
- 代码如下:<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001&quo
- 1.安装pyqt51.打开anaconda prompt命令窗口,激活虚拟环境:activate tensorflow2.安装PyQt5pi
- 摘要:本文介绍了tensorflow的常用函数。1、tensorflow常用函数TensorFlow 将图形定义转换成分布式执行的操作, 以
- 本文实例讲述了Go语言实现的树形结构数据比较算法。分享给大家供大家参考。具体实现方法如下:// Two binary trees may b
- antd-日历组件,前后禁止选择,只能选中间一部分:dateDisabledDate(current) { // 需求有效期的禁止选择时间
- 1、文件添加方式:pycharm提供了一个在新建文件自动生成文件头注释的功能,可以实现自动生成运行环境,作者、日期等必要信息,使用比较方便,
- 一、python中进程间通信业务场景:在当前遇到的业务场景中,我们需要启一个间隔任务,这个间隔任务跑一个算法,然后把算法的结果进行一些处理,
- 本文实例讲述了js点击事件的执行过程。分享给大家供大家参考,具体如下:js事件对象event包括很多事件类型,这里用onclick事件为例,
- 在本节中,您将创建一个新的MoviesController类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展
- 前言数据清洗是一项复杂且繁琐(kubi)的工作,同时也是整个数据分析过程中最为重要的环节。有人说一个分析项目80%的时间都是在清洗数据,这听
- 要写出一个五子棋游戏,我们最先要解决的,就是如何下子,如何判断已经五子连珠,而不是如何绘制画面,因此我们先确定棋盘五子棋采用15*15的棋盘
- 本文实例讲述了PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法。分享给大家供大家参考,具体如下:前面一篇 PHP递归实现文件夹的复制
- USE master; Go EXEC sp_attach_db @dbname = N'数据库名', @filename1
- 最多16列。 create table test ( f1 int, f2 int, f3 int, f4 int, f5 int, f6
- 你是否知道JavaScript其实也是一个函数式编程语言呢?本指南将教你如何利用JavaScript的函数式特性。要求:你应当已经对Java
- 匹配双字节字符(包括汉字在内): [^\x00-\xff] 应用:计算字符串的长度(一个双字节字符长度计2,ASCII
- JavaScript 是Netscape公司与Sun公司合作开发的。在 JavaScript 1.0发布时,Netscape Navigat
- 什么是集合1.集合是一个可变容器2.集合内的数据对象都是唯一的(不能重复)3.集合是无序的存储结构,集合内的数据没有先后关系4.集合是可迭代
- 方法一:使用列表推导式>>> vec = [[1,2,3],[4,5,6],[7,8,9]]>>> ge