Python 检索局部变量比检索全局变量快. 这意味着,尽量避免 "global" 关键字.
2. 尽量使用 "in"
使用 "in" 关键字. 简洁而快速.
for key in sequence:
print key
3. 当有大量字符串连续相加时使用String的join()方法而不是使用“+”号
对于字符串相加操作较少的时候,使用“+”是最快的,但当连续相加超过一定的界限时,则使用join()是一种比较快的方式。这是因为使用 + 连接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当连续相加的字符串很多时(a+b+c+d+e+f+...) ,效率低下就是必然的了。对于这种连加操作可以用列表实现:Str = ''.jon(a,b,c,d,e,f,...) 以提高效率,这样只会有一次内存的申请。
4. 为无限循环使用 "while 1"
在Python2中,True和False不是关键字,可以对其进行任意赋值,所以Python解释器就得再程序执行时每次都要对其值进行检查,而对于1,程序则不会检查,所以更快。
5. 使用xrange()处理长序列:
因为xrange()在序列中每次调用只产生一个整数元素。而相反 range(),它將直接给你一个完整的元素列表,用于循环时会有不必要的开销。
例如如下代码片:
n=range(10)
print n
print type(n)
结果如下:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
<type 'list'>
再考虑如下代码片:
n=xrange(10)
print n
print type(n)
结果如下:
xrange(10)
<type 'xrange'>
所以使用range(),生成的是一个完整的list对象;使用xrange,生成的是xrange的一个迭代对象,生成器,更省内存。当然,如果需要生成的列表项很少,最好还是使用range()。
6. 使用dict 和 set 测试成员:
检查一个元素是在dicitonary或set是否存在 这在Python中非常快的。这是因为dict和set使用哈希表来实现。查找效率可以达到O(1)。因此,如果您需要经常检查成员,使用 set 或 dict做为你的容器.
7. 使用第三方包
有很多为Python设计的高性能的第三方库和工具. 下面是一些有用的加速包的简短列表.
1. NumPy: 一个开源的相当于MatLab的包
2. SciPy: 另一个数值处理库
3. GPULib: 使用GPUs加速代码
4. PyPy: 使用 just-in-time 编译器优化Python代码
5. Cython: 將Python优码转成C
6. ShedSkin: 將Python代码转成C++
参考链接:http://www.open-open.com/news/view/111850f