代码之家  ›  专栏  ›  技术社区  ›  juztcode

使用生成器保存内存

  •  1
  • juztcode  · 技术社区  · 7 年前

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

    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.x[2]得到一个值(cur_directory,sub_directories,list_all_files_in_cur_directory)将包含100万个文件名。在第二个for语句中,我还生成了一个值,生成了一个生成器,但是,在这一点上,我已经从x中创建了一个列表,那么,这段代码真的可以节省100万个项目的内存空间吗?或者这不是在用例中使用generator的正确方法吗?如果是,我该怎么做呢?

    0 回复  |  直到 7 年前