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 堆和优先队列的使用详解
Mar 05 Python
解决Python中pandas读取*.csv文件出现编码问题
Jul 12 Python
django-rest-swagger的优化使用方法
Aug 29 Python
Python 类属性与实例属性,类对象与实例对象用法分析
Sep 20 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
Oct 30 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
python 导入数据及作图的实现
Dec 03 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 Python
Django如何批量创建Model
Sep 01 Python
python基于opencv实现人脸识别
Jan 04 Python
用Python远程登陆服务器的步骤
Apr 16 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中static静态变量的使用方法详解
2010/06/04 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
javascript 拖动表格行实现代码
2011/05/05 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
vue 文件目录结构详解
2017/11/24 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
Python算术运算符实例详解
2017/05/31 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
Python通过文本和图片生成词云图
2020/05/21 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
python RSA加密的示例
2020/12/09 Python
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
几个SQL的面试题
2014/03/08 面试题
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
4s店总经理岗位职责
2013/12/31 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书