位置: 编程技术 - 正文

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

  • 民办非企业收到捐赠固定资产
  • 关税完税价格是指什么意思
  • 单位卖二手车需要交什么税
  • 私车公用协议可以入账吗?
  • 申报后发现未勾选发票
  • 车间购买灯会计怎么做账
  • 购进石料再加工算自产吗
  • 网上代购收取手机费吗
  • 预付款与定金的比例
  • 资产重组过程中资产转出的税收问题
  • 行政单位现金日记账填写样本
  • 公司购车按揭利息可以开票吗
  • 以股权投资入股放高利贷违法吗
  • 销售利润率如何提高
  • 商品进销差价是资产类账户,其抵减的账户是
  • 简易征收税额航天信息服务费可以抵扣吗?
  • 资管产品征税
  • 融资租赁要怎么做
  • 其他应收款要做账吗
  • 一般纳税人销售旧货
  • 视同销售如何纳税调整?
  • 向境外支付违约金要代扣税吗
  • 进项发票里的印花税如何做账?
  • 企业在外地的房产怎么办
  • 软件开发公司怎么选择
  • 新公司税控盘购买流程
  • 收到存款利息收入
  • 在win7中,如何搜索指定扩展名的文件
  • 购买预付卡如何记账
  • ptssvc.exe - ptssvc是什么进程 有什么用
  • 电商新公司值得去吗
  • 只有高新技术企业能享受研发加计扣除吗
  • 公司现金用途
  • 超市进货产品
  • 购进的货物
  • php静态缓存
  • vue缓存路由组件相关的两个生命周期函数是
  • 计算机视觉竞赛很重要吗
  • php常用时间函数
  • 所得税费用会计处理
  • php手机验证码验证
  • 长期股权投资核算的成本法与权益法的主要差别有哪些
  • MySQL慢查询优化面试问题
  • 无偿受让股权是利好吗
  • Mysql中 show table status 获取表信息的方法
  • 出口退税帐务处理
  • 纳税人企业本月纳税额
  • 豆制品属于农副产品吗为什么
  • 公司法人往公司账户打钱怎么能换回来
  • 溢价收购股权所得税税率
  • 投资性房地产成本法账务处理
  • 债务资本的税后成本和税后债务成本
  • 预付卡充值可以退吗
  • 原材料跌价分录
  • 长期待摊费用科目怎么使用
  • 开发成本计入现金流量表
  • 执行企业会计准则和小企业会计准则的区别
  • 发票已经认证是什么意思
  • 土地出让的钱归谁
  • 所得税费用怎么计提
  • 为员工买的商业保险怎么做账
  • 固定资产怎么记入账本明细科目
  • mysql的日志
  • ubuntu20.04设置
  • linux使用范围
  • linux运维是必死之路
  • centos vncviewer
  • windows一键安装
  • Mac苹果系统怎么转换中文
  • macos 音量快捷键
  • winxp能玩啥大型游戏
  • linux的命令行界面
  • 脚本控制三行三列怎么写
  • linux重定位命令
  • javascript教程推荐知乎
  • python3.8基础教程
  • python自动化源码
  • js的文件可以直接预览吗
  • python中txt文件的读写
  • 外汇管理数字外管平台怎么登录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设