ITPub博客

首页 > Linux操作系统 > Linux操作系统 > python生成器的效率

python生成器的效率

原创 Linux操作系统 作者:longqidong 时间:2014-08-20 23:45:36 0 删除 编辑
今天在做一个list处理,由于内容较多,导致迟迟不过来结果,用性能分析后,发现慢在构造list的过程中。
由于是将所有数据都记载到内存计算,导致速度太慢。后面找到解决方案是采用yield构造生成器来处理。
速率大大的提升。
下面就针对yield和不适用yield做一个性能呢个对比,采用经典的斐波拉契数列计算。
def fib(n):
result = []
a=1
b=1
result.append(a)
for i in range(n-1):
a,b = b,a+b
result.append(a)
return result

这个函数是没有采用yield构建list.

def fib1(n):
a=1
yield a
b=1
for i in range(n-1):
a,b = b,a+b
yield a

这个函数采用yield生成数列。

当n较小的时候。两者没有多大差别。
print fib(10000)   当n很大时,差别体现出来了。我这里使用10000,在我自己基本上基本就停止工作了,出不来结果


for i in fib1(10000):
print i
而采用这种方式,同样是10000 。2.4s就完成了。可想而知,效率差别多大

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22418990/viewspace-1254964/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: python 正则表达式
请登录后发表评论 登录
全部评论

注册时间:2009-08-26

  • 博文量
    94
  • 访问量
    474901