首页 > 解决方案 > 使用生成器节省内存

问题描述

假设我的目录中有一百万个文件,如果我这样做的话,这将是一个巨大的内存消耗:

x = os.listdir('.')

假设由于某种原因,我选择使用 os.walk 方法并这样做是为了使用生成器:

def give_object(somepath)
    for x in os.walk(somepath):
        for j in x[2]:
             yield j

os.walk 本身就是一个生成器,我通过 x 获得 (cur_directory, sub_directories, list_of_all_files_in_cur_directory) 的值。x[2] 将包含 100 万个文件名。在第二个 for 语句中,我还生成了一个值,创建了一个生成器,但是,此时,我已经从 x 创建了一个列表,所以,这段代码真的会节省用于100万件?或者这不是在用例中使用生成器的正确方法吗?如果是这样,我应该怎么做?

标签: generatorpython-3.5

解决方案


推荐阅读