Faça streaming. Abra o arquivo e itere linha por linha, ou use csv.reader sobre o objeto de arquivo, para só uma linha ficar residente por vez, e empurre cada registro por estágios de generator em vez de montar listas intermediárias. Escreva no destino em lotes de alguns milhares. Se o trabalho for CPU bound, divida por faixas de bytes entre processos.
Por que os entrevistadores perguntam isso
Isso checa se streaming é o seu instinto ou uma reflexão tardia. Os entrevistadores veem bastante candidato que recorre a pandas read_csv por reflexo e depois descobre que o container é morto. Eles também querem ouvir pensamento operacional: capacidade de reinício, acompanhamento de progresso, escritas em lote, e saber quando a resposta certa é parar de escrever Python e carregar o arquivo no banco.
Como estruturar sua resposta
- Comprometa-se com streaming em vez de carregar tudo.
- Descreva o pipeline de generators e as escritas em lote.
- Adicione capacidade de reinício e relato de progresso.
- Diga quando você passaria isso para outra ferramenta.
Exemplo de resposta
Nada é carregado inteiro. Um objeto de arquivo já é um iterador sobre linhas, então eu leio linha por linha com csv.reader e encadeio estágios de generator para parsing, filtragem e transformação, o que mantém o pico de memória em cerca de um registro independente do tamanho do arquivo. As escritas vão em lote, tipicamente alguns milhares de linhas por insert, porque round trips linha a linha para o Postgres dominam tudo o mais. Como quarenta gigabytes demora, eu deixo o processo reiniciável: rastreio o offset de bytes ou a última chave processada num arquivinho de estado, logo progresso a cada cem mil linhas, e faço a escrita idempotente com upsert para que uma reexecução não duplique. Se o parsing acabar sendo o gargalo em vez do I/O, eu divido o arquivo por offsets de bytes e passo as faixas para um process pool, com cuidado de alinhar nas quebras de linha. Sinceramente, porém, minha primeira sugestão costuma ser pular o Python na carga por completo e usar o bulk copy do banco, e depois fazer a transformação em SQL, porque isso geralmente é uma ordem de magnitude mais rápido.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Como você lida com linhas malformadas no meio do stream?
- Polars ou duckdb mudariam sua resposta?
- Como você tornaria o processo retomável exatamente uma vez?
Mais perguntas para Desenvolvedor Python
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas