Куски данных из большого файла для многопроцессорной обработки?

Я пытаюсь распараллелить приложение, используя многопроцессорную обработку, которая принимает очень большой CSV-файл (от 64 до 500 МБ), выполняет некоторую работу построчно, а затем выводит небольшой файл фиксированного размера.

В настоящее время я делаюlist(file_obj), который, к сожалению, полностью загружается в память (я думаю), и затем я разбиваю этот список на n частей, n - количество процессов, которые я хочу запустить. Я тогда делаюpool.map() в разбитых списках.

Похоже, что это действительно очень плохое время выполнения по сравнению с однопоточной методологией "просто открой файл и итерируй над ней". Может кто-нибудь предложить лучшее решение?

Кроме того, мне нужно обработать строки файла в группах, которые сохраняют значение определенного столбца. Эти группы строк сами могут быть разделены, но ни одна группа не должна содержать более одного значения для этого столбца.