位置: 编程技术 - 正文

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

  • 业务招待费可以进项抵扣吗
  • 什么是进项税和进项税
  • 年末暂估下年怎么入账
  • u8反记账操作步骤
  • 发票普票一个月能开多少
  • 开立个人银行账户的条件
  • 购买成品入库并结转成本会计分录怎么写?
  • 科技公司出售市场价格
  • 上年的费用支出包括哪些
  • 调离工作岗位是什么处分
  • 小规模企业营业税
  • 小规模企业所得税税率多少
  • 我是小规模企业客户要求开专票不开投诉
  • 预付账款的借方是应付账款的哪方
  • 出口退税网上申报视频
  • 个税申报表怎么打印
  • 在职员工 开公司
  • 处置子公司合并抵消
  • 金蝶软件如何修改凭证号
  • 企业增速怎么算
  • 其他资金结转结余包括哪些
  • 企业老板机票怎么报销记账
  • 邮件远程控制
  • linux中的应用程序主要保存在哪些目录中
  • 创业补贴的作用
  • 短期借款和短期贷款
  • 培养自己的php编程能力
  • 所得税时间性差异与暂时性差异
  • 完工产品成本怎么分配
  • 自有房子出租怎么做账
  • php单例模式应用场景
  • service的启动方式及生命周期
  • 支付的食堂费用怎么入账
  • chatcters
  • 工程结算结算gbq文件怎么做
  • 为什么会有不同的人种
  • 固定资产转为投资性房地产公允价值
  • 农民工工资专用账户打款比例
  • 哪些税费可以抵扣
  • 什么叫境外所得
  • 销售折扣收货方法有哪些
  • 个体工商户可以开增值税专用发票
  • sqlserver英文发音
  • SQL server配置管理器打开TCP/IP后重启不了
  • sqlgun
  • windows下MySQL 5.7.3.0安装配置图解教程(安装版)
  • 第二季度所得税表中研发费用
  • 售后回购怎么做账
  • 资产负债率计算方法公式
  • 当月没开发票
  • 磅差怎么开票
  • 建筑服务红字发票需要填写备注吗
  • 公司与公司之间的函怎么写
  • 财产裁定书
  • sql server如何远程登录
  • sql cast,convert,QUOTENAME,exec 函数学习记录
  • win10 bios模式
  • 电脑爆音卡死
  • Office 2007在Windows Vista中出现的反常字体问题的解决办法
  • 删除默认操作系统选项
  • 重庆四日游最佳攻略超详细
  • windows8如何添加打印机
  • 如何关闭mcafee软件
  • win10系统怎么刻录光盘?win10刻录光盘详细图文步骤
  • android内存工具
  • jquery Ajax 全局调用封装实例详解
  • 批处理 修改文件名
  • js弹出小窗口
  • js操作属性的方法
  • unity unite
  • javascript怎么编写
  • 开票物品名称要求
  • 如何查询个体工商户是查账征收还是核定征收
  • 简并税率是什么意思
  • 护肤品关税税率
  • 历年房产税
  • 新车交了购置税后给什么凭证
  • 房地产开发企业土地成交额与去年同期相比增长约
  • 提高增值税税率是什么意思
  • 河南三门峡税务社保缴费电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设