python 性能鸡汤

转载自:http://www.oschina.net/question/1579_45822

1:使用内建函数
input() int() isinstance() issubclass() iter() open() ord() pow() print() property()

2 使用join()连接字符串
>>> chunk = [‘a‘, ‘b‘, ‘c‘, ‘d‘]
>>> a = ‘_‘.join(chunk)
>>> a
‘a_b_c_d‘

3 使用python多重赋值,交换变量
>>> x = 0
>>> y = 1
>>> z = 2
>>> x, y, z = z, y, x
>>> x
2
>>> y
1
>>> z
0

4 尽量使用局部变量(python检索局部变量比全局变量快,意味着要减少使用‘global’)

5 使用延迟加载加速
将‘import’声明移入函数中,仅在需要的时候导入。如果某些模块不需要马上使用,稍后导入他们。

6 为无限循环使用‘while 1’
如果需要一个无限循环,例如监听套接字实例。while True 可以实现,但 while 1:是单步运算,可以提高性能:

7 使用 list comprehension
更具可读性(函数式编程)

>>> evens = [i for i in range(10) if i % 2 == 0]
>>> evens
[0, 2, 4, 6, 8]

8 使用xrange()处理长序列:
节省内存,因为xrange()在序列每次调用只产生一个整数元素。而range(),它将直接给你一个完整的元素列表,用于循环时会有不必要的开销。

9 使用python generator
节省内存和提高性能,例如一个视频流,你可以一个一个字节的发送,而不是整个流
>>> chunk = (1000 * i for i in xrange(1000))
>>> chunk
<generator object <genexpr> at 0x7f12f0073910>
>>> chunk.next()
0
>>> chunk.next()
1000
>>> chunk.next()
2000
>>> chunk.next()
3000

10 了解itertools模块
该模块对迭代和组合是非常有效的。例如列出列表[1, 2, 3]的所有排列组合,仅须3行代码
>>> import itertools
>>> iter = itertools.permutations([1, 2, 3])
>>> list(iter)
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]








郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。