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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章