位置: 编程技术 - 正文

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

  • 收到的加盟费要交税吗
  • 银行承兑汇票是什么科目
  • 发票没有纳税人识别号能开吗
  • 客户维护费计入什么科目
  • 海关入库成功下一步干嘛
  • 资产负债表中存货项目金额怎么算
  • 增值税发票密码忘记了怎么办
  • 个税父母赡养抵扣3000
  • 通行费进项抵扣条件
  • 送现金券活动方案
  • 由母公司承担子公司债务的财务处理怎么做?
  • 商品房买卖合同预售和商品房买卖合同有什么区别
  • 合伙企业交个税例题
  • 增值税税负率税率怎么算
  • 增值税税控盘服务费可以每年都抵扣吗
  • 填制和审核凭证是什么意思
  • 老总来公司视察
  • 长期股权投资用交印花税吗
  • 转让无形资产税目征收营业税的是
  • 怎么在bios设置启动项
  • 网页浏览器字体颜色怎么改
  • win10为什么毛病这么多
  • 合作社实际没有法人代表
  • 出口退税如何办退税手续
  • 交易性金融资产属于什么科目
  • php -i
  • 投资性房地产如何计提折旧
  • uniapp控制硬件设备
  • 怎么分析一个企业的营销策略
  • 外经证逾期未核实怎么办
  • vue3 element ui
  • 农业公司经营项目有哪些?
  • php实现查询功能
  • angular 初学者快速上手教程
  • 身份证号码的正确读法
  • java 通配符
  • 商业银行贷款的资本充足率
  • 应计入财务费用的科目是
  • 外包食堂可以开专票吗
  • 会计成本确认
  • 企业工会经费计提标准
  • 绩效工资交个人所得税吗
  • 管理费用增加是因为什么
  • 小规模纳税人减免增值税会计处理
  • 背书的行为
  • 银行手续费没有发票要调增吗
  • 房地产按揭贷款政策
  • 哪些固定资产是负债类
  • 学历教育服务增值税
  • 事业单位有奖励吗
  • 以物易物是什么时代
  • 减免税款借方有利息吗
  • 建筑业人工费怎么做账
  • 消耗性生物资产属于非流动资产吗
  • 应收账款的审计方式和手段
  • 车辆租赁费发票怎么开
  • 无形资产的摊销方法
  • sql数据库口令
  • mysql闪退怎么回事
  • itunes无法更新app
  • wrme.exe是什么
  • win10鼠标指针在文本区很小
  • mac电脑系统安装
  • gwsloader.exe是什么意思
  • win10触摸模式开启
  • 怎么调用windows api
  • win8怎么做win7系统
  • perfcurve函数
  • linux中makefile怎么写
  • bash脚本加密
  • 详解各种汽油一吨等于多少升
  • node.js 配置
  • google gsoc
  • jquery页面跳转的方法
  • 全国增值税务查询官网
  • 增值税纳税申报操作流程
  • 小规模无票收入怎么报税
  • 个人所得税税率怎么算
  • 税务总局全国增值税发票查验平台
  • 纳税服务理念2023
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设