位置: 编程技术 - 正文

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

  • 增值税发票认证在哪里
  • 股权转让后企业注销个人所得税怎么处理
  • 应纳税所得额是含税还是不含税
  • 采购返利怎么生成发票
  • 企业所得税季度申报时间
  • 现金余额本月金额和本年累计金额怎么填
  • 未核定印花税
  • 转给子公司发工资分录
  • 营业税金及附加借贷方向
  • 单位发放中秋月饼价值有规定吗
  • 一般纳税人转让二手车增值税税率
  • 应付企业负担的职工社会保险费
  • 城镇土地使用税纳税义务发生时间
  • 高新补贴收入计入什么科目
  • 预提工程成本的会计分录
  • 公户转账备注写错会查吗
  • 子公司和母公司可以一起投标吗
  • 外汇实收资本如何做账
  • 报销差旅费必须要车票吗
  • 残疾人保障金工资总额包括社保吗
  • 确认无法回收的应收账款会计分录
  • 预收账款科目
  • 费用化支出含义
  • 如何下载网页?
  • 上月进项税转出,本月怎么做账
  • 计算机怎么设置长亮
  • erl.exe是什么进程
  • 多交的所得税退回来账务处理
  • windows商店如何切换地区
  • 股东以非货币出资办理什么手续
  • 企业所得税的纳税人包括哪些
  • 营业收入包括应收账款吗
  • 应付职工薪酬包括个人社保和个税吗
  • PHP:imagecolorclosestalpha()的用法_GD库图像处理函数
  • 企业收到赠送商品怎么办
  • Yii2超好用的日期和时间组件(值得收藏)
  • 微信红包的随机性
  • 油票抵税的顺序步骤是什么
  • 辞退补偿金计算
  • 股东退股怎么入账
  • phpcms怎么用
  • mysql的where语句优化
  • 成本核算步骤
  • 要多少费用?
  • 税务现金流量表填错了怎么办
  • 货到票未到的会计分录怎么做
  • sql for in
  • 应收账款确认无法收回的会计处理
  • 自产产品对外捐赠为什么不确认收入
  • 借贷记账法的基本规则和账户结构
  • 员工的交通费发票可以报销嘛
  • 折扣如何做账
  • 垃圾处理费计提依据
  • 员工差旅费会计分录
  • sql like多个
  • 安装centos6.10
  • xp复制粘贴功能失效
  • Vista 优化预读文件设置,提速开关机速度
  • mac如何通过终端启动
  • solaris ip配置
  • WZCBDLS.EXE - WZCBDLS是什么进程
  • qtzgacer.exe - qtzgacer进程是什么文件 .作用是什么
  • windos10正式版
  • 安卓属性
  • shell脚本编程实例
  • webrtc介绍
  • unity socket udp
  • jquery将文本框设置为只读
  • ubuntu libtorch
  • javascript获取css
  • mysql批量建表脚本
  • linux如何剪切文件
  • textview hint
  • python socket connect
  • Android屏幕适配分屏
  • 出租车票真伪查询官网
  • 河北省电子税务局电话
  • 青岛税务局局长是什么级别?
  • 外经证核销在公司所在地还是在项目所在地
  • 税务筹划前景
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设