位置: 编程技术 - 正文

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

  • 实际负税计算公式
  • 办理税务登记需要法人身份证原件吗
  • 受托代销商品和受托代销商品款怎么列示
  • 增值税发票税控开票软件打不开
  • 财务会计制度名称一般是
  • 应付职工薪酬包括哪些内容
  • 资产负债表日后调整事项与非调整事项的区别
  • 国有企业驻外人员待遇
  • 销售发票的会计处理
  • 长期待摊费用可以转入费用或者成本吗
  • 为取得固定资产而发生的什么支出可计入固定资产成本
  • 高危职业人身意外险
  • 待处置资产损溢在什么科目
  • 小微企业按季度预缴企业所得税
  • 什么叫记载资金的账簿
  • 小规模附加税怎么计提分录
  • 利润表的本期数即本月实际发生数
  • 企业法人和股份的关系
  • 增值税发票和电子发票都可以报销吗
  • 软件产品登记证书官费
  • 取得劳务费的账务处理
  • 公司之间借款怎么操作
  • 电脑如何修改硬盘模式
  • mac怎么卸载软件core sync
  • 自产货物用于生产
  • 哪些企业需进行预算管理
  • 不动产租赁费计入什么科目
  • 在途物资属于什么存货
  • yii2组件的理解
  • 固定资产清理主要核算什么
  • css width height
  • labelme目标检测
  • 损失函数是什么
  • ssd训练自己的数据集pytorch
  • JavaScript数组(四):判断数组相等的4种方法
  • ChatGPT遭禁用、抵制后又停止Plus付费发生了?
  • midjourney 初级使用说明
  • thinkphp route
  • 中国烟草资产负债表
  • 直接转销法能不能用
  • jquery ui table
  • 公司没有车加油票怎么做账
  • 印花税每个月都有吗
  • 安装购买的材料怎么做账
  • 增值税普通发票税率
  • 以无形资产换入固定资产发生的净损益
  • 小规模免征增值税到什么时间止
  • 怎样暂估成本的会计分录
  • 自建不动产领用原材料增值税进项
  • 买商品赠送赠品怎么做账
  • 从政府取得土地使用权缴增值税吗
  • 出售固定资产已开票未收款账务处理
  • 固定资产房屋拆除后如何做帐务处理
  • 农业免税企业开票有限额吗
  • 税额抵减的账务处理
  • 可以抵扣进项税的项目包括
  • 有会计从业资格证还有用吗
  • 公司食堂招待客户,客户付了钱怎么入账
  • 收到转账支票怎么填
  • sql数据库对象
  • windows2008 2016
  • ios自定义应用图标
  • 微软警告:64位Win7系统或无法安装KB3033929补丁更新
  • centos安装完为什么没有桌面
  • win7任务管理器怎么打开
  • win7显示ipv4ipv6无网络访问权限
  • linux lvm2_member
  • js中script标签的作用
  • Lesson01_01 HTML基础
  • shell 循环 for
  • Android Build.prop
  • shell脚本clear
  • javascript中math.ceil
  • python读取大txt文件
  • 谷歌的全球化发展战略
  • 10086出现预警提示怎么回事
  • 驻马店燃气投诉电话号码
  • 应税销售额如何计算
  • 工会经费怎么缴付
  • 九江税务总局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设