Использование генератора для экономии памяти - PullRequest
0 голосов
/ 19 мая 2018

Предположим, у меня есть миллион файлов в моем каталоге. Если бы я только что это сделал, это заняло бы огромное количество памяти:

x = os.listdir('.')

Предположим, по какой-то причине я решил использовать метод os.walk исделал это, чтобы использовать генератор:

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

os.walk сам является генератором, и я получаю значение (cur_directory, sub_directories, list_of_all_files_in_cur_directory) через x.x [2] будет содержать 1 миллион имен файлов.Во втором операторе for я также получаю значение, создавая генератор, но на тот момент я уже создал список из x, так что, действительно ли этот код сэкономит место в памяти, которое будет использовано для1 миллион предметов?Или это не правильный способ использования генератора для варианта использования?Если да, то как мне это сделать?

...