¿Cómo agrupar datos de un archivo grande para multiprocesamiento?

Estoy tratando de paralelizar una aplicación usando multiprocesamiento que toma un archivo csv muy grande (64 MB a 500 MB), hace un trabajo línea por línea y luego genera un archivo pequeño de tamaño fijo.

Actualmente hago unlist(file_obj), que desafortunadamente se carga completamente en la memoria (creo) y luego divido esa lista en n partes, siendo n la cantidad de procesos que quiero ejecutar. Entonces hago unapool.map() en las listas desglosadas.

Esto parece tener un tiempo de ejecución muy, muy malo en comparación con una metodología de un solo subproceso, simplemente abrir el archivo e iterar sobre él. ¿Alguien puede sugerir una mejor solución?

Adicionalmente, necesito procesar las filas del archivo en grupos que preserven el valor de una determinada columna. Estos grupos de filas pueden dividirse, pero ningún grupo debe contener más de un valor para esta columna.

Respuestas a la pregunta(4)

Su respuesta a la pregunta