优化Python程序性能的15个小技巧

如果你已经熟悉Python,本文介绍的小技巧将在优化Python程序的性能方面有一定作用。

1、使用profile和timeit模块来测试程序的性能。

2、减少函数调用的次数。
如果需要对一个list的每个元素进行操作,那就把整个list传入函数,而不是一个一个元素分别传入函数。

3、用xrange来替代range。
xrange是range的C语言实现,在性能上较好。

4、对大数据处理时,使用numpy中的数据结构和运算。

5、字符串连接时,使用 “”.join(string),要比+和+=的销量高。

6、while 1要比while True的速度快。

7、对于list的处理,列表解析要比for循环快,for循环要比while循环快。
A = [x for x in range(10)]

A = []
for x in range(10):
     A.append(x)

x = 0
C = []
while x < 10:
     C.append(x)
     x += 1

8、使用C语言版本的模块。
比如cProfile, cStringIO , cPickle

9、访问局部变量要比全局变量、内置对象快。

10、使用itertools模块,它提供了各种迭代方法。

11、尝试使用Map, Reduce, Filter来代替循环。
Map的用法:map(函数, 序列),对于序列中规定每个元素,调用函数,把所有返回值放到一个list中。
>>> map(lambda x: x*x, range(1, 11))
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Reduce的用法:reduce(函数, 序列),将序列中的元素依据函数的操作合并起来,最终返回一个结果。
>>> reduce(lambda x,y : x+y, range(1, 11))
55

Filter的用法:filter(函数, 序列),依据函数的返回值过滤序列中的元素,函数返回真(非0)则保留元素,返回假(0)则不保留。
>>> filter(lambda x: x%3==0, range(1, 11))
[3, 6, 9]

12、对于判断元素元素存在性的问题,使用set或者dict作为数据结构要比线性的list/tuple查询速度快。

13、不可变类型要比可变类型的访问速度快。
不可变类型:int,string,float,tuple
可变类型:list,dictionary

14、对list的插入操作是O(n)时间复杂度的,如果要频繁进行列表头尾不的添删操作,推荐使用deque,双端队列。

15、垃圾回收机制不是万能的,可以使用del来删除对象。

本文翻译自下面的地址,内容上有修改。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值