Python性能优化小建议

1. 尽量使用局部变量  

    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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值