python中生成器yield,节省内存

一、python对生成yield的理解推荐查看这篇
点这里
写的特别好,容易理解

二、作用:合理利用降低程序的复杂度
例子: 比如range方法使用循环是很占内存的,用yield替换降低内存占用

#encoding:utf-8
import sys


print "range对象内存占用:{}".format(sys.getsizeof(range(1000)))

print "xrange对象内存占用:{}".format(sys.getsizeof(xrange(1000)))       #xrange 内部是生成器yield实现
#用yield实现range的功能
def test():
    def foo(num1):
        while num1<1000:
            num1=num1+1
            yield num1
    for n in foo(0):
        pass
test()
print "num对象实例化的内存占用:{}".format(sys.getsizeof(100))

结果 :

range对象内存占用:8064
xrange对象内存占用:32
num对象实例化的内存占用:24
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章