使用内置数据类型

内置数据类型非常快,尤其是与我们自定义的类型相比。

这主要是因为内置的数据类型是由 C 实现的,而在 Python 中写的代码运行速度实在无法与之相比。

尽量使用内置函数,去掉属性访问

importmathimporttimedeffunc():

lst=[]for i in range(1, 10000000):

lst.append(math.sqrt(i))#直接调用 sqrt

returnlst

start=time.time()

lst=func()

end=time.time()print(end-start)

运行时间:4.470336198806763秒

from math import sqrt #直接引用特定函数或属性

importtimedeffunc():

lst=[]for i in range(1, 10000000):

lst.append(sqrt(i))#直接调用 sqrt

returnlst

start=time.time()

lst=func()

end=time.time()print(end-start)

运行时间:3.7398300170898438秒

因为在进行属性访问的时候啊,会调用这个对象的 __getattribute__ 或者 __getattr__ 方法,造成了额外的开销,所以导致速度变慢。

使用生成器,例如列表推导式

from math importsqrtimporttimedeffunc():#for 循环改为列表推导式

lst = [sqrt(i) for i in range(1, 10000000)]returnlst

start=time.time()

lst=func()

end=time.time()print(end-start)

列表推导式内的迭代是 C 实现的,所以效率更高。

使用 lru_cache 缓存或持久化

参考:https://www.cnblogs.com/-wenli/p/11441142.html

尽量使用本地变量

程序运行速度与在每个作用域中查找变量有关。

实际上,访问不同作用域的变量速度也是不同的,比如在函数内访问本地变量(最快),访问类层面变量(如 self.name,比较慢),以及全局变量,比如例子中导入的函数 time.time (这种最慢)。

使用numba

介绍

Numba是Python的即时编译器,它最适用于使用NumPy数组和函数以及循环的代码。使用Numba的最常用方法是通过其装饰器集合,可以应用于您的函数来指示Numba编译它们。当调用Numba修饰函数时,它被编译为机器代码“及时”执行,并且您的全部或部分代码随后可以以本机机器代码速度运行!

什么样的代码会被加速?

代码中的数学运算、NumPy或者循环,兼容常用的科学计算包,如numpy、cmath等。

怎么使用?

只需要添加两行代码

导入及使用语法糖

importnumba as nbimportnumpy as npimporttime

@nb.jit(nopython=True)defnb_sum():

arr=[]for i in range(10000000):

arr.append(i)defpy_sum():

arr=[]for i in range(10000000):

arr.append(i)

start=time.time()

nb_sum()

end=time.time()print("numba加速的函数运行时间: %s" % (end -start))

start=time.time()

py_sum()

end=time.time()print("没加速的函数运行时间: %s" % (end - start))

工作原理

Numba读取装饰函数的Python字节码,并将其与有关函数输入参数类型的信息相结合。

它分析并优化您的代码,最后使用LLVM编译器库生成函数的机器代码版本,根据您的CPU功能量身定制。

每次调用函数时都会使用此编译版本。

python运行慢-提高python运行速度的几个技巧相关推荐

  1. python运行软件-提高Python程序的运行速度

    尝试了一下用Python实现的K-Means Clustering算法,抽样了10000篇百科词条,分为1000个类,分词后词语总数为130000左右.如果把1000个类定义为1000个向量,每个向量 ...

  2. 指定版本的python运行和指定python版本的pip

    1. pip在指定Python版本下安装 pip install -t D:\python3.5(32bit)\Lib\site-packages -i https://pypi.douban.com ...

  3. python安装后如何使用-python运行环境,python安装后如何使用

    接下来以win7系统为例 计算机--右键--属性 在左栏找到"高级系统设置" 点击"环境变量" 在系统变量中,找到Path,双击 再字符串的末尾,加一个分号; ...

  4. python运行电脑要求,Python初学者请注意!别这样直接运行python命令,否则电脑等于“...

    Python初学者请注意!别这样直接运行python命令,否则电脑等于" Python初学者请注意!别这样直接运行python命令,否则电脑等于"裸奔" 点击上方&quo ...

  5. python运行程序-用Python执行程序的4种方式,编程必备

    在编写代码中,经常会遇到在 Python程序中打开外部程序的需求,那么在Python里如何打开外部程序呢?今天我们来介绍四种不同的方式,供大家参考收藏. 使用 os.system() os.syste ...

  6. python效率计算-提高python中重心坐标计算的效率

    背景:我试图将一张脸变成另一张不同形状的脸. 为了将一个图像扭曲成另一个图像,我使用面部地标的delaunay三角剖分并将一个肖像的三角形扭曲到第二个肖像的相应三角形.我正在使用重心坐标系将三角形内的 ...

  7. vscode如何运行python新手教程_VSCODE安装以及使用Python运行调试代码的简单记录

    1. VScode安装 官网下载VSCODE https://code.visualstudio.com/ 下载呢windows的x64安装包,安装stable的版本 当前日期 2018.01.15 ...

  8. python之路-02 Python基础

    变量声明及赋值 声明变量:name = "Alex Li" 上述代码声明了一个变量,变量名为: name,变量name的值为:"lanhan" #!Author ...

  9. python程序启动其他python程序_python中使用fork创建新的进程

    python中如果要创建新进程的话,可以使用os模块中的fork方法.为了了解其中工作原理,笔者结合linux的查看进程ps命令,对这个方法做了一些测试. python运行时进程 python一开始运 ...

最新文章

  1. OpenCV视频分析背景提取与前景提取
  2. zabbix Server 4.0 监控TCP的12种状态
  3. python取均匀不重复的随机数
  4. Android5.1设备无法识别exFAT文件系统的64G TF卡问题
  5. 《视觉SLAM十四讲》笔记(ch8)
  6. linux 两个驱动 竞争,Linux设备驱动第五章(并发和竞争)读书笔记(国外英文资料).doc...
  7. 细细品味C#——文件操作
  8. hive处理日志,自定义inputformat
  9. .Net(一):再识面向对象之C#学习总结
  10. Selenium WebDriver架构
  11. Mob云验证,让身份验证更简单
  12. 关于videoplayer
  13. BatchOutput PDF 2.2.32 Mac 破解版 PDF文档自动批量打印工具
  14. 【钛坦白】清华大学李建:深度学习在时空大数据分析中的应用(转载)
  15. 计算机基础a3知识点,《计算机应用基础》期末试卷A(A3版).doc
  16. WPF Binding绑定模式
  17. 技术团队分享改进总结
  18. linux复制整个目录_如何在Linux中复制整个目录?
  19. matlab中类的用法
  20. 谷歌逐梦穿戴圈:Wear OS的失败能够靠Pixel Watch挽回吗?

热门文章

  1. uart与usart区别
  2. PCL中异常处理机制
  3. iOS runtime和runloop
  4. 检测一组电动车电瓶好坏要多久?
  5. react编译器jsxTransformer,babel
  6. kali高速更新源以及主题修改方法
  7. 对集合使用Comparator
  8. 数据集与JSON对象互相转换
  9. python能用来做什么有意思的事情-可以用 Python 编程语言做哪些神奇好玩的事情?...
  10. python主要用来开发什么-python主要用于什么开发