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

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

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

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

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

16
задан unutbu 1 July 2015 в 20:39
поделиться