位置: 编程技术 - 正文

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

  • 发放上年年终奖个税
  • 固定资产清理的账务处理
  • 房产税从租和从价
  • 小规模纳税人季度不超30万免增值税
  • 贴现的费用怎么入账
  • 非居民劳务个税怎么计算
  • 印花税购销合同包括哪些
  • 营业成本包括期初存货成本和期末存货成本
  • 跨期列支成本费用危害
  • 一般纳税人所得税是季报还是月报
  • 企业购置节能节水专用设备
  • 化验室购买仪器计入什么科目
  • 现金支票存根联需要盖章吗?
  • 增值税调整后开具发票
  • 生产企业报关单金额大于发票金额
  • 一般纳税人购进鸡蛋怎样抵扣
  • 集团企业涉税需求网络
  • 收到联营企业分派的现金股利为什么不计入利润总额
  • 城市维护建设税属于什么税种
  • 计提社保公司承担部分的会计分录
  • u盘中病毒了怎么格式化
  • 腾讯电脑管家开机加速在哪里
  • 建筑企业收到预收账款要交增值税吗
  • 工业企业生产成本核算表
  • php递归算法经典实例
  • 电脑每次开机都要按f1怎么解决
  • .info是什么意思?
  • 金融企业存出保函的条件
  • 直接转销法账务处理
  • 银行贷款成本高
  • 运费抵扣的基本原则
  • 深度学习环境配置(pytorch版本)----超级无敌详细版(有手就行)
  • 跨年专票红冲步骤
  • 退回的货款应该记什么费用
  • 销售边角料的会计分录
  • 房地产开发费用最高扣除比例
  • 从网上学电脑下载什么软件
  • sql server 2008 R2安装
  • wind安装
  • 电子发票能退回去吗
  • 股东之间股权转让流程
  • 未开票收入如何记账
  • 销售返利如何得到法律的保护
  • 融资租赁缴纳什么税
  • 企业自建房产提款流程
  • 确认收入未开发票
  • 无形资产未取得发票
  • 分包管理费取费标准
  • 企业缴纳社保费包括企业部分和个人部分
  • 工会经费返还属于什么收入
  • 固定资产装修费用如果符合固定资产
  • 收付转三种凭证的限制类型
  • 银行贷款给个人用于经营属于消费贷款
  • 一个真正的企业应该具备哪些特征
  • 应收账款的账户余额
  • 建账时都要建哪些科目
  • bios如何关闭网卡
  • windows正版光盘
  • atwakeup进程
  • 彻底关闭windows10自动更新工具
  • macbookair屏幕变成横版
  • wininfo.exe - wininfo是什么进程
  • avgserv9.exe是什么进程 avgserv9进程的详细介绍
  • mac打开下载文件夹
  • windows 8
  • linux怎样使用命令
  • win7怎么使用打印机打印
  • shader cull
  • jQuery实现非常实用漂亮的select下拉菜单选择效果
  • dos echo命令
  • Perl的Mail::POP3Client模块和Gmail通信实例
  • 什么叫真游戏
  • 相机跟随人物移动
  • ajax请求传参
  • angularjs2
  • jquery 图片裁剪
  • 脚本 python
  • javascript简明教程
  • 本市可以跨县高考报名吗
  • 发票上的税额由谁填写
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设