Нарезка · Шаг 3 из 4
Части по столько-то
Главное действие всей утилиты: поток записей превращается в части, и каждую оболочка тут же пишет на диск. Часть уходит на диск, как только набралась, — иначе миллион записей снова оказался бы в памяти, и вся затея потеряла бы смысл.
Что сделать
Режьте поток записей на части — каждая уходит на диск, как только набралась.
Что приходит
zapisi— поток записейrazmer— сколько записей в части, целое больше нуля
Что вернуть
Генератор: отдаёт части — списки по razmer записей подряд; последняя может быть короче; в памяти — не больше одной части.
Допишите функцию chasti в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Это главное действие утилиты: каждую отданную часть оболочка сразу пишет на диск отдельным файлом. Решите шаг — и выгрузка разрежется, не загружаясь в память.
list(chasti([1, 2, 3, 4, 5], 2))
[[1, 2], [3, 4], [5]]
Функция принимает поток записей и размер части (целое больше нуля). Отдаёт части — списки подряд идущих записей, по размеру части в каждой. Последняя часть может быть короче, если записи кончились раньше. На пустом потоке не отдаётся ничего. Пока у очередной части не попросили, из потока берётся не больше, чем на уже отданные части.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.