Léelo en streaming. Abre el fichero e itéralo línea a línea, o usa csv.reader sobre el objeto de fichero, para que solo haya una fila residente a la vez, y pasa cada registro por etapas de generadores en vez de construir listas intermedias. Agrupa las escrituras al destino en lotes de unos pocos miles. Si el trabajo tiene carga de CPU, reparte por rangos de bytes entre procesos.
Por qué lo preguntan los entrevistadores
Esto comprueba si el streaming es tu instinto o una ocurrencia tardía. Los entrevistadores ven a muchos candidatos que tiran de pandas read_csv por reflejo y luego descubren que matan el contenedor. También quieren oír pensamiento operativo: poder reanudar, seguimiento del progreso, escrituras por lotes, y saber cuándo la respuesta correcta es dejar de escribir Python y cargar el fichero en la base de datos.
Cómo estructurar tu respuesta
- Comprométete con el streaming en vez de cargarlo entero.
- Describe el pipeline de generadores y las escrituras por lotes.
- Añade capacidad de reanudar e informe de progreso.
- Di cuándo se lo pasarías a otra herramienta.
Ejemplo de respuesta
Nada se carga entero. Un objeto de fichero ya es un iterador sobre líneas, así que leo fila a fila con csv.reader y encadeno etapas de generadores para parsear, filtrar y transformar, lo que mantiene el pico de memoria en aproximadamente un registro sea cual sea el tamaño del fichero. Las escrituras van por lotes, normalmente unos pocos miles de filas por insert, porque las idas y vueltas a Postgres fila a fila dominan sobre todo lo demás. Como cuarenta gigabytes llevan un rato, lo hago reanudable: guardo el offset en bytes o la última clave procesada en un pequeño fichero de estado, logueo el progreso cada cien mil filas y hago la escritura idempotente con un upsert para que volver a lanzarlo no pueda duplicar. Si resulta que el cuello de botella es el parseo y no la E/S, parto el fichero por offsets de bytes y reparto rangos a un process pool, con cuidado de alinear en los saltos de línea. Aunque, siendo sincero, mi primera sugerencia suele ser saltarse Python para la carga y usar la copia masiva de la base de datos, y luego hacer la transformación en SQL, porque eso suele ser un orden de magnitud más rápido.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Cómo gestionas las filas mal formadas a mitad del streaming?
- ¿Cambiaría tu respuesta con polars o duckdb?
- ¿Cómo harías el proceso reanudable exactamente una vez?
Más preguntas para Desarrollador Python
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas