位置: 编程技术 - 正文

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

  • 经营所得个税计算案例
  • 进口烟丝交多少税
  • 国债利息属于免税吗
  • 起重机属于固定资产哪个类别
  • 库存商品属于资产类会计科目吗
  • 公司给员工购买意外险怎么做账
  • 房地产企业配套设施的核算内容
  • 收到低值易耗品的专票但未付款
  • 固定资产清理期末可以有余额吗
  • 生产出口退税企业内部加工费占多少比例
  • 补交增值税怎么处理
  • 企业可根据实际情况随意设置会计科目
  • 出口发票税率开错了怎么办
  • 购货方申请红字发票怎么申报
  • 保理利率多少可以买房
  • 减免增值税可以税前扣除吗
  • 库存现金盘点发现现金多怎么处理
  • 工资预支怎么做账
  • 小规模纳税人金融服务税率
  • 差额增值税发票和全额增值税发票
  • PHP:session_register_shutdown()的用法_Session函数
  • 发票开错了怎么处理好?
  • 悬崖雕塑
  • 境外租赁要交什么税
  • php socketio
  • php调用其他php
  • php数组排列组合
  • 中国税收居民是什么是中国公民嘛
  • 微信公众号模板软件
  • vue写的购物车详细步骤
  • vue的一些面试题
  • vue从入门到精通教程
  • 网络销售平台优势和劣势
  • 退回社保怎么做分录
  • 应收账款出售给银行账务处理
  • pandas模块的主要特点
  • 有趣的 Go HttpClient 超时机制
  • 厂区地面硬化属于土建还是市政
  • 租赁公司一般都有什么税
  • 纳税人识别号和信用代码一样吗
  • 个体户增值税减免申报明细表怎么填
  • 中级会计报名必须用电脑吗
  • 报销差旅费大于预借差旅费会计分录
  • 实收资本未到位
  • 季节性移动的原因
  • 电子银行承兑汇票怎么签收
  • 暂估的应付账款需要调整报表吗
  • 留存收益资本成本公式
  • MySQL关于exists的一个bug
  • sql不重复计数函数
  • MySQL中实现插入或更新操作(类似Oracle的merge语句)
  • sql函数大全
  • mysql7.x单独安装mysql的方法
  • 谁编写了元素周期表
  • win2003和xp一样吗
  • freebsd使用手册
  • 重装win7系统后桌面没东西
  • skydrive官网登录
  • w10开发者模式
  • win10mobile现在能干吗
  • win7如何访问xp
  • win7系统连接蓝牙音箱
  • 如何检测电脑能否上网
  • linux命令行图片
  • Linux安装anaconda
  • linux常用命令查询
  • opengl 缓存
  • javascript获取数据
  • 压缩的linux命令
  • 关于jquery的描述错误的是
  • Android使用教程
  • rom开发是做什么的
  • js复制对象的方法有哪几种
  • 每天一篇经济学人
  • 张孝祥西江月
  • Python中遍历字典
  • ca钥匙登陆不了电子税务局
  • 甘肃税务局电子发票怎么开
  • 国税系统打印不了发票怎么办
  • 上海嘉定南翔房子
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设