Куски данных из большого файла для многопроцессорной обработки?
Я пытаюсь распараллелить приложение, используя многопроцессорную обработку, которая принимает очень большой CSV-файл (от 64 до 500 МБ), выполняет некоторую работу построчно, а затем выводит небольшой файл фиксированного размера.
В настоящее время я делаюlist(file_obj)
, который, к сожалению, полностью загружается в память (я думаю), и затем я разбиваю этот список на n частей, n - количество процессов, которые я хочу запустить. Я тогда делаюpool.map()
в разбитых списках.
Похоже, что это действительно очень плохое время выполнения по сравнению с однопоточной методологией "просто открой файл и итерируй над ней". Может кто-нибудь предложить лучшее решение?
Кроме того, мне нужно обработать строки файла в группах, которые сохраняют значение определенного столбца. Эти группы строк сами могут быть разделены, но ни одна группа не должна содержать более одного значения для этого столбца.