Python 性能优化技巧总结


Posted in Python onNovember 01, 2016

1.使用测量工具,量化性能才能改进性能,常用的timeitmemory_profiler,此外还有profilecProfilehotshot等,memory_profiler用了psutil,所以不能跟踪cpython的扩展;

2.用C来解决费时的处理,c是效率的代名词,也是python用来解决效率问题的主要途径,甚至有时候我都觉得python是c的完美搭档。常用的是Cython,直接把py代码c化然后又能像使用py包一样使用,其次是ctypes,效率最最高的存在,最后还有CPythoncffi都是??诺拇嬖冢?/p>

3.优化算法,所有语言通病,算法的提升我觉得是在所有提升之上的,但也是最难的,好在现在大部分常用的算法都已经封包,除非自己给自己挖坑,所以弄懂标准库里的数据结构和常用api是如何实现的很重要;

4.2里的实现有人做了更高效的包用以替换python中常见的一些实现,如果瓶颈在stringio、pickle、profile这类上的可以考虑替换为c的版本;

5.数据结构尽量使用元组tuple,特别是数据量大的时候,实在不行list也可以,尽量不要用class,如果一定要用可以加slot,效率再不够就只能结合2来加速了;

6.延迟加载,import不是一定要写在一页的开始,哪里都可以,越碎片越能把包的加载延迟甚至不被加载;

7.用multiprocessing来实现多线程,可以跳出GIL的限制;

8.python处理循环很烂,解释性语言就这样,跟其它编译型语言比就是蜗牛,所以减少循环次数和嵌套次数能显著提升性能,当然了使用pypy就没有这个问题了;

9.使用加速器,很喜欢psyco的使用方式,如果用2.7-的版本那么不失为一个懒人的选择,现在已经不再维护,创始人去了pypy,pypy是用Python实现的python,底层转为平台依赖的c、.net、java的中间语言,方式非常聪明,大爱,但是缺点是库的支持还不完善,我的项目基本都能支持,解决几个小问题即可,如果性能瓶颈在循环和内存上可以试试,最大的好处是不需要更改一句代码和做另外的设置,没有任何侵入。

参考资料:

Python 代码性能优化技巧: https://www.ibm.com/developerworks/cn/linux/l-cn-python-optim/

Python性能优化技巧: http://kuanghy.github.io/2016/09/26/python-optimize

Python 相关文章推荐
python3获取当前文件的上一级目录实例
Apr 26 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
对Python使用mfcc的两种方式详解
Jan 09 Python
解决Python selenium get页面很慢时的问题
Jan 30 Python
python3 配置logging日志类的操作
Apr 08 Python
Python如何实现的二分查找算法
May 27 Python
如何在mac版pycharm选择python版本
Jul 21 Python
Opencv+Python识别PCB板图片的步骤
Jan 07 Python
Python实现简单的2048小游戏
Mar 01 Python
python使用pygame创建精灵Sprite
Apr 06 Python
深度学习小工程练习之垃圾分类详解
Apr 14 Python
pytorch MSELoss计算平均的实现方法
May 12 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 #Python
浅谈django中的认证与登录
Oct 31 #Python
python 把数据 json格式输出的实例代码
Oct 31 #Python
python中json格式数据输出的简单实现方法
Oct 31 #Python
python并发编程之多进程、多线程、异步和协程详解
Oct 28 #Python
微信 用脚本查看是否被微信好友删除
Oct 28 #Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 #Python
You might like
常见的PHP五种设计模式小结
2011/03/23 PHP
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
php实现的操作excel类详解
2016/01/15 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
一些常用的JS功能函数(2009-06-04更新)
2009/06/04 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
Python格式化压缩后的JS文件的方法
2015/03/05 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
python调用staf自动化框架的方法
2018/12/26 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
企业文化演讲稿
2014/05/20 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript