第四部分:python性能技巧
4.1 查询操作为主时,选择字典结构比list结构效率更高
4.2 取list的交集、并集、差集时,可借助set数据结构
如listintersection = list(set(lista)&set(listb))
4.3 原则是尽量减少循环过程中的计算量,有多重循环的尽量将内层的计算提到上一层.所以可以在外层实现的内层计算要在外层完成,然后传值进去。
4.4 python 中的字符串对象是不可改变的,因此对任何字符串的操作如拼接,修改等都将产生一个新的字符串对象,而不是基于原字符串.
对于字符串的操作,尽量使用下列方法
(1)在字符串连接的使用尽量使用 join() 而不是 + 号。
(2)当对字符串可以使用正则表达式或者内置函数来处理的时候,选择内置函数。
如 str.isalpha(),str.isdigit(),str.startswith(('x', 'yz')),str.endswith(('x', 'yz'))
(3)对字符进行格式化比直接串联读取要快,因此要使用out = "<html>%s%s%s%s</html>" % (head, prologue, query, tail)
4.5 尽量使用局部变量,避免全局变量,python访问局部变量的速度比访问全局变量的速度更快
4.6 if done is not None 比语句 if done != None 更快
4.7 使用级联比较 "x < y < z" 而不是 "x < y and y < z"
4.8 build in 函数通常较快,add(a,b) 要优于 a+
4.9 python内置了性能分析工具,如profile,hotshot,与cProfile.
示例1, 以profile为例:
import profile
def profileTest():
Total =1;
for i in range(10):
Total=Total*(i+1)
print Total
return Total
if __name__ == "__main__":
profile.run("profileTest()")
运行结果:
1
2
6
24
120
720
5040
40320
362880
3628800
5 function calls in 0.083 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 :0(range)
1 0.082 0.082 0.082 0.082 :0(setprofile)
1 0.000 0.000 0.000 0.000 <string>:1(<module>)
1 0.000 0.000 0.083 0.083 profile:0(profileTest())
0 0.000 0.000 profile:0(profiler)
1 0.000 0.000 0.000 0.000 python.py:2(profileTest)
4.10 常用的python 自带的优化工具,如 Psyco,Pypy,Cython,Pyrex
第四部分:python性能技巧的更多相关文章
- Python性能提升小技巧
第一部分 1-使用内建函数: 你可以用Python写出高效的代码,但很难击败内建函数. 经查证. 他们非常快速 2-使用 join() 连接字符串. 你可以使用 + 来连接字符串. 但由于string ...
- python代码优化技巧
转自:http://www.douban.com/group/topic/31478102/ 这个资料库还有些不错的好文章: http://www.ibm.com/developerworks/cn/ ...
- python性能优化
注意:本文除非特殊指明,”python“都是代表CPython,即C语言实现的标准python,且本文所讨论的是版本为2.7的CPython. python为什么性能差: 当我们提到一门编程语言的 ...
- python学习第四讲,python基础语法之判断语句,循环语句
目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...
- #1 Python灵活技巧
前言 Python基础系列博文已顺利结束,从这一篇开始将进入探索更加高级的Python用法,Python进阶系列文章将包含面向对象.网络编程.GUI编程.线程和进程.连接数据库等.不过在进阶之前,先来 ...
- 利用 NGINX 最大化 Python 性能,第二部分:负载均衡和监控
[编者按]本文主要介绍 NGINX 的主要功能以及如何通过 Nginx 优化 Python 应用性能.本文系国内 ITOM 管理平台 OneAPM 编译呈现. 本文上一篇系: 利用 NGINX 最大化 ...
- Python性能鸡汤(转)
英文原文:http://blog.monitis.com/index.php/2012/02/13/python-performance-tips-part-1/ 英文原文:http://blog.m ...
- Python性能优化(转)
分成两部分:代码优化和工具优化 原文:http://my.oschina.net/xianggao/blog/102600 阅读 Zen of Python,在Python解析器中输入 import ...
- 四、Python基础(1)
目录 四.Python基础(1) 四.Python基础(1) 1.什么是变量? 一种变化的量,量是记录世界上的状态,变指得是这些状态是会变化的. 2.为什么有变量? 因为计算机程序的运行就是一系列状态 ...
随机推荐
- UVa 11021 - Tribles
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- CSS 垂直居中。
1,display: table; display: table-cell <div style="border:solid red 1px ;height:200px;width:2 ...
- Python中的random模块
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- Word2013可以写博客
步骤如下http://www.cnblogs.com/guyichang/p/4629211.html
- 在T-SQL中访问远程数据库(openrowset、opendatasource、openquery)
1. 启用Ad Hoc Distributed Queries 在使用openrowset/opendatasource前要先启用Ad Hoc Distributed Queries服务,因为这个服 ...
- IOS多线程之NSOperation学习总结
NSOperation简介 1.NSOperation的作用 配合使用NSOperation和NSOperationQueue也能实现多线程编程 2.NSOperation和NSOperationQu ...
- Spark的编译
由于Spark的运行环境的多样性,如可以运行在hadoop的yarn上,这样就必须要对Spark的源码进行编译.下面介绍一下Spark源码编译的详细步骤: 1.Spark的编译方式:编译的方式可以参考 ...
- 《Objiect》
[16-1]Object概述&Object-equals方法&toString方法. ================================================= ...
- Airbase-ng帮助
Airbase-ng 1.2 rc2 - (C) 2008-2014 Thomas d'Otreppe Original work: Martin Beck http://www.aircrack ...
- hdu 2090
PS:输入麻烦...我还以为是输入一个就输出一个...后来看了大神的才知道....暴力破解了... 代码; #include "stdio.h" int main(){ ,a,b; ...