Предположим, у меня есть миллион файлов в моем каталоге. Если бы я только что это сделал, это заняло бы огромное количество памяти:
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 миллион предметов?Или это не правильный способ использования генератора для варианта использования?Если да, то как мне это сделать?