首页 / 知识
让你Python代码更快的小技巧
2023-11-12 13:42:00
大家好!今天呢,我们来聊一聊如何加速你的python代码。
Python语言的优点可以列举出许多,语法简单易懂、模块丰富、应用广泛等等。但是世界上没有有完美的东西,python一个明显缺点就是运行速度慢,至少跟C语言没法比。
所以,不安于现状的Pythoner就开发了许多工具。其中,最著名的莫过于Cython和Numba。其中Cython可以把Python代码转成C代码执行,而Numba则是Python中的一个JIT编译器(即时编译器),以此提高运行效率。
不过我们今天不讲这些复杂的工具,看看能不能只通过改进你的Python代码以提高速度。
函数
函数可以提高代码的可读性,那么用了函数对程序的执行效率是否有影响呢?我们来做个对比实验。
先来看一个不用函数的版本:
importmathimporttime
start=time.time()#开始计时lst=[]#定义一个空列表foriinrange(1,10000000):lst.append(math.sqrt(i))#疯狂地往列表里添加计算结果end=time.time()#停止计时print(end-start)
此代码在我的电脑上输出为2.124(不同配置的电脑结果不一样,可多次运行取平均值)。再来加上函数试一下:
importmathimporttime
deffunc():lst=[]#定义一个空列表foriinrange(1,10000000):lst.append(math.sqrt(i))#疯狂地往列表里添加计算结果returnlst#返回结果
start=time.time()#开始计时lst=func()end=time.time()#停止计时print(end-start)
在我的电脑上,使用了函数的程序用了大概花了1.743秒。多次尝试,基本上都会比上一个版本节省15~20%左右时间,这个差距还是存在的。
有人可能会觉得,增加了函数调用,效率可能会低。但实际上,我们这里只是增加了一次调用,影响甚微。而由于Python中局部变量和全局变量的实现方式不同,使用局部变量效率会高些。
所以使用函数不仅提高可读性,用得好还能让代码运行得更快。
去掉属性访问
再来看另一个例子,还是刚才的函数版本,我们做一点修改,改变其中导入函数的方式,由math.sqrt改为sqrt:
frommathimportsqrt#直接引用特定函数或属性importtime
deffunc():lst=[]foriinrange(1,10000000):lst.append(sqrt(i))#直接调用sqrtreturnlst
start=time.time()lst=func()end=time.time()print(end-start)
在其它代码均没有变动的情况下,这个程序的输出时间变成了……
1.413秒!
居然更快了。这又是为什么呢?
因为在进行属性访问的时候啊,会调用这个对象的getattribute或者getattr方法,造成了额外的开销,所以导致速度变慢。
列表推导式
最后再来看看列表推导式(ListComprehension),它的效率和普通for循环会有不一样吗?
继续在上一个版本上修改:
frommathimportsqrtimporttime
deffunc():#for循环改为列表推导式lst=[sqrt(i)foriinrange(1,10000000)]returnlst
start=time.time()lst=func()end=time.time()print(end-start)
结果是0.968秒!
这又是为什么呢?因为列表推导式内的迭代是C实现的,所以效率更高。
同最初的版本相比,实现同样的效果,我们仅通过调整代码的写法,速度就提高了一倍还多。
以上内容为大家介绍了让你Python代码更快的小技巧,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们http://www.mobiletrain.org/
最新内容
相关内容
linux命令行查看时间?
linux命令行查看时间?,系统,时间,信息,环境,命令,地址,服务,工作,情况,用户数,linux查看系统运行了多长时间使用什么命令方法一:uptime命令 会linux系统命令改时间?
linux系统命令改时间?,时间,系统,服务,大陆,国家,基础,城市,命令,时区,时钟,如何在Linux中更改时区1、方法2:使用时区选择菜单打开终端应用程序linux命令行看代码?
linux命令行看代码?,代码,基础,系统,命令,数字,工作,情况,进程,程序,终端,在Linux命令终端中查看和编辑曾执行过的命令1、使用历史命令:在终端linux命令代码怎么看?
linux命令代码怎么看?,时间,系统,代码,命令,状态,工具,情况,电脑,实时,基础,linux查看系统命令是什么有的,Linux中有多个命令可以用于查看文件python中常用的工具有哪些?
python中常用的工具有哪些?,工具,代码,培训,平台,中国,公司,管理,智能,最新,功能,Python是入门编程的不错选择,现在很多人在转行学习编程时选择比较好用的Python代码编辑器
比较好用的Python代码编辑器,代码,平台,环境,培训,教育,设计,数据,办公,人员,分析,Python是一款非常简单的编程语言,其功能使用起来都十分方便pycharm无法输入代码?
pycharm无法输入代码?,代码,环境,工具,分析,输入法,键盘,性能,计算机,问题,版本,PyCharm是一款Python语言开发的集成开发环境(IDE),它是许多PythoPython常用时间模块有哪些?
Python常用时间模块有哪些?,时间,信息,模块,培训,代码,灵活,字符串,日期,小时,实例,在编写代码的过程中,我们经常需要与时间打交道,所以说掌握时让Python代码更易维护的工具
让Python代码更易维护的工具,代码,工具,标准,项目,质量,地方,更正,一致,变动,软件,检查你的代码的质量,通过这些外部库使其更易维护。可读性很五个用于Python前端开发的工具
五个用于Python前端开发的工具,代码,工具,项目,设计,软件,在线,基础,平台,状态,业务,Python是一种高度通用且功能强大的编程语言,其特质使其非深入理解python函数传参机制
深入理解python函数传参机制,培训,对象,函数,变量,类型,复本,下面,操作,机制,内存,首先需要申明的一点是,python里是没有像C和C++里那样按值传python怎么检验是否安装和如何安装
python怎么检验是否安装和如何安装pip工具?,工具,培训,电脑,版本,命令,脚本,框架,以下,培训班,一下吧,学习过Python的小伙伴都知道,想要安装Pyt