位置: 编程技术 - 正文

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

  • 私人大额转账要到柜台办理吗
  • 企业注销库存怎么做账务处理
  • 固定资产盘盈影响所有者权益吗
  • 购进货物未取得增值税专用发票可以抵扣进项税额吗
  • 附加税减免所得税汇缴的时候需要调整吗
  • 土增税清算地下室怎么扣除
  • 跨月应该如何开具红字发票?
  • 固定资产造成的损失可以税前扣除吗
  • 企业现金管理办法
  • 公司开办费有哪些
  • 法人资本个人资本
  • 公司未开展业务就没有债权债务吗
  • 工程预收款如何处理
  • 速动比率和流动比率下降说明什么
  • 小规模纳税人专票开1%还是3%
  • 应交增值税进项税额月底怎么处理
  • 预提 冲销
  • 工资年终奖金扣多少税
  • 外购集体福利用交税吗
  • 发票冲红有时间要求吗
  • 企业注销时未分配利润怎么处理
  • 纳税信用等级是自动判定吗
  • 工会经费该怎么交
  • 房地产开发有限公司英文
  • bios怎么恢复出厂设置dell
  • 在windows 7中
  • 进项税额转出会计分录福利费
  • 应缴纳增值税的公式
  • vue兼容性
  • 企业所得税征收点
  • 企业所得税的征税范围是什么
  • 微芯片技术
  • jar启动指定启动类
  • 福利包括什么
  • 新准则下的现金流量包括
  • 因汇率变动而导致的损失属于
  • php获取字符串中的指定字符
  • 无形资产的处置方式
  • mount.nfs an incorrect mount
  • php使用for循环实现乘法口诀表
  • 深究Python中的asyncio库-shield函数
  • 公司收到保险公司退保费怎么账务处理
  • 预付款项为什么这么多
  • 收到的加盟费要交税吗
  • 返利冲减销售收入还是进费用
  • 税控系统技术维护费全额抵扣分录
  • 季报利润表本月金额怎么填
  • 零售药店过期药品整改报告
  • 残保金申报可以随便填吗
  • 建筑工程劳务分包,工伤责任承担
  • 公司盈利的钱怎么拿出来
  • 冲销凭证如何做分录
  • 开服务业发票要交印花税吗?
  • 基本生产成本和生产成本
  • 企业间借贷是否合法2018
  • 复式记账法的特点不包括
  • 航天开票系统怎么导出已开票明细
  • 税务会计每个月几号需要干工作流程
  • sqlserver CONVERT()函数用法小结
  • sqlserver isnull在数据库查询中的应用
  • winxp u盘拒绝访问
  • windows 2000 server sp4 下载
  • docker 自启动
  • ghost怎么安装gho文件
  • ikeeperpab.exe是什么
  • Win7笔记本怎么连接wifi
  • u盘制作iso镜像文件启动
  • windows端口占用怎么关闭
  • alt用不了
  • textview可以点击吗
  • 一个简单的小实验
  • 在shell脚本中$用于
  • javascript基础编程
  • 搭建简单的spike课程
  • ug怎么加载制图模板
  • jquery mouse
  • 常用的javascript对象
  • 单位税额怎么算出来的
  • 宝马535车船税
  • 深圳关内停车场收费标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设