python性能是个瓶颈,没必要在上面花太多精力。如果在意性能,应当直接换编程语言。
优化python的思路:
1、数据结构
set/list/dict等等要区分清楚用途
2、算法
不在这里细说,通用思路
3、多层循环
- 减少不必要的运算 for i in range(10): x = len(aa) ....
- 减少构造中间变量 t = a; b = t ; a = t; => a, b = b,a
- 减少查找变量的深度 保证在locals()中就可以找到,不要去globals(),甚至__builtins__
4、语言特性
- 用生成器(generator)/yield 对于遍历时,由于它没有构造整个列表,而是由迭代器移动,所以它节省空间
- 用join连接字符串 它比“+”高效的原因,它只有构造一个最终的字符串;而“+”需要构造n-1个中间字符串
- 多用C扩展库 如cPickle等等这样c字母开头的库
- 迭代生成时多用() (for i in [1,2..] if i ...) 比 [for i in [1,2..] if i ...]快很多
- 反序列化工具比较 json.loads比cPickle.loads快近3倍,比eval(...)快20多倍
5、并发
6、特殊工具
- PyPy 它比CPython实现的Python要快6倍以上
- cProfile 分析每个函数所用时间,是分析工具
参考:http://segmentfault.com/a/1190000000666603#articleHeader17
时间: 2024-10-06 12:35:46