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编写爬虫小程序
May 14 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
Jun 29 Python
python中安装模块包版本冲突问题的解决
May 02 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
基于python实现聊天室程序
Jul 27 Python
浅析python的优势和不足之处
Nov 20 Python
用python给自己做一款小说阅读器过程详解
Jul 11 Python
PyTorch 解决Dataset和Dataloader遇到的问题
Jan 08 Python
IDLE下Python文件编辑和运行操作
Apr 25 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
Python基于mediainfo批量重命名图片文件
Dec 29 Python
浅谈Python中对象是如何被调用的
Apr 06 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导入excel文件到mysql数据库的方法
2015/01/14 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
2010/03/07 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
Python常用正则表达式符号浅析
2014/08/13 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
python 读取DICOM头文件的实例
2018/05/07 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
营业员演讲稿
2013/12/30 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
终止合同协议书范本
2016/03/22 职场文书
Python实现科学占卜 让视频自动打码
2022/04/09 Python