位置: 编程技术 - 正文

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

  • 进项税额转出的几种情况会计分录
  • 纳税人识别号怎么看是不是一般纳税人
  • 产品成本计算的基本方法和辅助方法的划分标准是
  • 严格财务报销程序
  • 项目固定资产投资强度
  • 金税盘地区编号怎么查
  • 生产成本二级科目有工资吗
  • 劳务收入个税的计算方法
  • 进项税额抵减欠税后附加税可以抵减吗
  • 银行对个人借款的处理
  • 劳保费用可以开专票吗
  • 购进原材料验收入库,贷款商业汇票结算
  • 财税〔2017〕39号商业健康保险个人所得税
  • 企业注销前需要固定资产清理吗
  • 资产负债表里面应付账款怎么算
  • 固定资产残值率一般是多少
  • 发生的业务招待费属于什么科目
  • 网店提现要多久能到账
  • 代运营公司流程
  • 增值税留抵退税账务处理
  • 苹果手机键盘剪切板在哪里打开
  • 销售利润率的计算公式Excel
  • 什么情况转账会延迟2天
  • 银行的财务会计
  • 出租商品计入什么科目
  • linux不能联网怎么解决
  • 多提附加税跨年怎么申报
  • 服装制造业现状和发展趋势
  • php写文件函数
  • 人工智能课程心得体会
  • 将预收款冲抵前欠货款会计分录
  • 处置固定资产的增值税怎么处理
  • 企业为什么一定要签三方
  • 新注册企业实收资本没到账怎么处理
  • 应付账款的平行登记
  • SQLite3 命令行操作指南
  • 月初领票是不是要等到报完税才可以领
  • Win2008中SqlServer2008 无法打开错误日志文件导致无法启动的解决方法
  • DB2专家王云谈商业智能BI
  • 防伪开票系统打不开
  • 新准则合同结算的科目编码为
  • 进口卷烟消费税定额税率
  • 工资分摊计提分配方式?
  • 正常在职员工的工作时间
  • 银行余额调节表电子版
  • 现金收款凭证的填制日期应当是
  • 设置包装盒
  • mysql 索引 语句
  • mysql 备份和恢复
  • hprof-conv.exe
  • windows域环境搭建
  • windows怎样设置
  • Ubuntu 12.04安装Xen常见问题及解决方法汇总
  • 操作系统的定义
  • 如何配置centos7的ip地址
  • 禅道界面
  • centos做bond4
  • linux如何配置双网卡
  • Linux怎么添加用户
  • 微软为什么这么贵
  • Cocos2d-JS中JavaScript继承
  • 日历控件默认日期
  • excel表格时间选择
  • [置顶]bilinovel
  • easyui的表单验证
  • xml能写网页吗
  • python动态创建函数
  • 黑洞数6174视频
  • unity火球特效
  • 表单验证jquery
  • 即将发布的新能源汽车
  • javascript怎么做
  • 当jquery ajax遇上401请求的解决方法
  • jQuery处理XML文件的几种方法
  • 农村医保网上如何查询
  • 税务局风险评估是什么意思
  • 四川省网上税务局怎么登录
  • 土地增值税有哪些税收优惠
  • 汽车票换票需要手续费吗
  • 税务稽查检查笔录范文
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设