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 相关文章推荐
python如何通过protobuf实现rpc
Mar 06 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
python编程嵌套函数实例代码
Feb 11 Python
python 筛选数据集中列中value长度大于20的数据集方法
Jun 14 Python
Python3安装Pillow与PIL的方法
Apr 03 Python
详解python编译器和解释器的区别
Jun 24 Python
深入了解Python iter() 方法的用法
Jul 11 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
Jul 19 Python
python实现图片插入文字
Nov 26 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
May 27 Python
Python新手学习raise用法
Jun 03 Python
win10+anaconda安装yolov5的方法及问题解决方案
Apr 29 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 Class 文章
2007/04/04 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
Node.js实现数据推送
2016/04/14 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
js仿360开机效果
2019/12/26 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
python 图片验证码代码
2008/12/07 Python
python实现的jpg格式图片修复代码
2015/04/21 Python
Python实现的最近最少使用算法
2015/07/10 Python
python实现识别相似图片小结
2016/02/22 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
flask中过滤器的使用详解
2018/08/01 Python
python3 flask实现文件上传功能
2020/03/20 Python
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
夜大毕业生自我评价分享
2013/11/10 职场文书
顶岗实习接收函
2014/01/09 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
消防隐患整改通知书
2015/04/22 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
赢在执行观后感
2015/06/16 职场文书
表扬信范文
2019/04/22 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS