Python - yield

来源:互联网 发布:网络诽谤案例 编辑:程序博客网 时间:2024/05/16 10:59

详细分析请移步这里

下附测试代码和结果

计算机初始状态

这里写图片描述


利用list进行迭代

def fabbylist(max):    n, a, b = 0, 0, 1    list = []    while n < max:        list.append(b)        a, b = b, a + b        n = n + 1    return listif __name__ == "__main__":    max = 1e9    for i in fabbylist(max):        print i

从htop中可以看出内存占用一下子暴涨很多


利用yield进行迭代

def fabbyyield(max):    n, a, b = 0, 0, 1    while n < max:        yield b        a, b = b, a + b        n = n + 1if __name__ == "__main__":    max = 1e9    for i in fabbyyield(max):        print i

这里写图片描述

内存的占用变化处于正常范围


0 0
原创粉丝点击