使用生成器来节省内存

时间:2018-05-19 16:43:38

标签: generator python-3.5

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

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万件物品?或者这不是使用生成器用于用例的正确方法吗?如果是这样,我该怎么做呢?

0 个答案:

没有答案