位置: 编程技术 - 正文

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不)

  • 个人注册电子税务局
  • 我国税收居民
  • 工商年报填好后怎样公示
  • 企业所得税清算报备表清算结束日
  • 处置使用过的固定资产,税率按多少
  • 什么叫应纳税额什么与什么的比率叫做税率
  • 委托加工产品月末结转成本
  • 基本养老保险覆盖人数
  • 转账支票签章如何盖及相关注意事项
  • 装修公司在装修完后增加费用
  • 个体工商户年末计提的工资,次年怎么算
  • 无运输工具承运业务按何税目缴纳增值税
  • 公司支付媒体广告费用必须签订合同吗?如果没有签订合同是否不能税前扣除?
  • 个体工商户是否需要缴纳印花税
  • 发票查重
  • 分公司的发票可以由总公司开吗
  • 个体户的公账怎么操作
  • 购进农产品怎么做账
  • 支出凭证的日期
  • 民办非企业捐赠支出会计处理
  • 企业收到留抵退税宣传报道
  • win10自带的清理对固态有影响吗
  • 公司有长期挂账的说法吗
  • Linux系统中quota磁盘命令的相关使用解析
  • deepin linux安装教程
  • 私企固定资产管理办法
  • vi应用项目
  • 育空领地
  • 金税盘锁死会电子发票也开不了吗
  • 国税一证通
  • 前端工程搭建
  • 租金和物业管理费税率
  • 机票的退票费可以开具发票吗
  • php如何post
  • 个体工商户可以给自己交社保吗
  • 工商银行代发工资多久到账
  • java强制类型转换有哪些
  • 织梦专题页模板
  • 织梦网站特有标识
  • 四联发票都需要盖章吗
  • 投资者减除费用30000
  • sqlserver如何锁表
  • 餐饮管理公司如何收取管理费
  • 可供出售金融资产是流动资产吗
  • 销售明细账本怎么填写
  • 商场联营方案
  • 公司一般户的钱怎么拿出来
  • 汽车以租代售合法吗
  • 支付的员工餐费怎么记账
  • 备用金发工资到底可不可以?
  • 土地流转的基本原则包括哪些
  • 管理不善造成的存货盘亏损失计入什么科目
  • 企业当年实现的净利润即为企业当年可供分配的利润
  • 辞退员工 工资
  • 外埠存款账务处理方法
  • 明细账怎么订起来
  • 工程项目分包需要招标吗
  • 公司初建账都有什么账
  • innodb update 锁
  • windows禁止安装
  • ultra系统优盘恢复
  • window10英文版安装步骤
  • winxp开机黑屏只有光标
  • mac如何中文输入法
  • 和大家一起分享一下你读书以后的感受吧
  • ubuntu 2021
  • 安卓 游戏软件
  • linux如何创建守护进程
  • js 根据时间排序
  • android线程间通信的几种方法
  • javascript的简介
  • python设计gui
  • Python的内置字典数据类型为___
  • javascript入门基础
  • 广东省国家税务局电子税务局官网
  • 玉林税务局班子成员
  • 教育培训行业的发展
  • 河北工伤网上申请流程
  • 电子税务局如何查询财务报表
  • 开票风险预警机制黄色预警严重吗?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设