位置: 编程技术 - 正文

python 性能优化方法小结(python 效率优化)

编辑:rootadmin

推荐整理分享python 性能优化方法小结(python 效率优化),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:Python性能优化指南,python性能调优,python性能调优,python 运行速度优化,Python性能优化指南,python性能调优,Python性能优化指南,python性能优化,内容如对您有帮助,希望把文章链接给更多的朋友!

提高性能有如下方法

1、Cython,用于合并python和c语言静态编译泛型

2、IPython.parallel,用于在本地或者集群上并行执行代码

3、numexpr,用于快速数值运算

4、multiprocessing,python内建的并行处理模块

5、Numba,用于为cpu动态编译python代码

6、NumbaPro,用于为多核cpu和gpu动态编译python代码

为了验证相同算法在上面不同实现上的的性能差异,我们先定义一个测试性能的函数

定义执行的算法如下

对应的数学公式是

生成数据如下

第一个实现f1是在内部循环执行f函数,然后将每次的计算结果添加到列表中,实现如下

当然实现这种方案的方法不止一种,可以使用迭代器或eval函数,我自己加入了使用生成器和map方法的测试,发现结果有明显差距,不知道是否科学:

迭代器实现

eval实现

生成器实现

python 性能优化方法小结(python 效率优化)

map实现

接下来是使用numpy的narray结构的几种实现

上面的f5和f6只是使用的处理器个数不同,可以根据自己电脑cpu的数目进行修改,也不是越大越好

下面进行测试

测试结果如下

发现f8的时间最短,调大一下时间精度再测一次

发现使用map的性能最高,生成器次之,其他方法的性能就差的很远了。但是使用narray数据的在一个数量级,使用python的list数据又在一个数量级。生成器的原理是并没有生成一个完整的列表,而是在内部维护一个next函数,通过一边循环迭代一遍生成下个元素的方法的实现的,所以他既不用在执行时遍历整个循环,也不用分配整个空间,它花费的时间和空间跟列表的大小是没有关系的,map与之类似,而其他实现都是跟列表大小有关系的。

内存布局

numpy的ndarray构造函数形式为

np.zeros(shape, dtype=float, order='C')

np.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)

shape或object定义了数组的大小或是引用了另一个一个数组

dtype用于定于元素的数据类型,可以是int8,int,float8,float等等

order定义了元素在内存中的存储顺序,c表示行优先,F表示列优先

下面来比较一下内存布局在数组很大时的差异,先构造同样的的基于C和基于F的数组,代码如下:

下面来测试性能

输出如下

可知,C内存布局要优于F内存布局

并行计算

未完,待续。。。

标签: python 效率优化

本文链接地址:https://www.jiuchutong.com/biancheng/377177.html 转载请保留说明!

上一篇:Python+Selenium自动化实现分页(pagination)处理(selenium自动化步骤)

下一篇:Python中你应该知道的一些内置函数(你知道python不)

  • 银行开具的票据怎么查询
  • 出租人融资租赁发生的初始直接费用
  • 需要登记的特殊药品
  • 凭证附件的粘法
  • 记账凭证银行利息该怎么记凭证
  • 股权转让需要开董事会吗
  • 行政事业性收费票据
  • 收到退税如何记账
  • 固定资产进项税额
  • 固定资产怎么确认是不是投入使用了
  • 评估所得征税方法是一种控制纳税人逃税和避税的措施
  • 多缴了附加税现金怎么办
  • 工地用材料如何分类
  • 固定资产转为投资性房地产折旧
  • 费用收入结转本年利润
  • 发票是不是都一样
  • 企业租车费用怎么处理方法
  • 清洁费免税吗
  • 股权案例分析2020
  • 特殊性税务处理和一般性税务处理的区别
  • 广告行业监管政策
  • 应收账款分录借方负数转到预收账款的哪方
  • 工业企业和其他企业经营的对象
  • 应收账款无法收回确认为坏账分录
  • 如何禁用bios里的secure boot
  • 企业接受捐赠的固定资产账务处理
  • win11测试版和正式版区别
  • php基础入门
  • 没收入长期待摊怎么办
  • 本地运行库是什么
  • 委托加工物资加工费
  • 小规模纳税人按季度申报
  • 预测编码方式
  • 单位购买降暑用品
  • 境外汇款预处理是什么意思
  • php checkbox使用
  • 涌泉的准确位置图 图解
  • vue中解决跨域问题
  • pyqt5 pycharm
  • python的继承用法
  • python模块的搜索路径
  • vue连接webapi
  • linux mongodb配置文件
  • 帝国cms首页调用显示标题图片代码
  • 工程物资进项税额转出
  • 企业贷款的条件和流程
  • 存货计提减值准备对所得税的影响
  • linux mysql 安装与操作
  • mysql怎么恢复数据
  • 企业所得税季度预缴纳税申报表
  • 上月发票如何冲红
  • 公司车辆保养计入什么费用
  • 一般纳税人车辆租赁费的税率是多少
  • 取暖费用摊销吗
  • 发生额大额标准怎么确定
  • 整个期间影响损耗的因素
  • 现金日记账怎么划线
  • sqlserver日期计算年龄
  • sqlserver存储过程怎么查看
  • sqlserver 禁用触发器 超时
  • centos基本环境
  • 在win7系统中如何用快捷键复制文件或文件夹
  • w7打穿越火线
  • linux网络优化
  • win10系统怎样卸载程序
  • 进入Linux单用户模式
  • linux有两个ip
  • [置顶]游戏名:chivalry2
  • android基于什么语言
  • replace函数怎么替换
  • perl脚本函数
  • jquery 获得焦点
  • firefox怎样调整为中文
  • css中清除浮动的方法
  • linux tar -zxf
  • 置顶高站位
  • Python文本相似性计算之编辑距离详解
  • 南昌 税务局
  • 深圳如何举报税务违法
  • 福建高速公路电子发票怎么开
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设