Replies: 2 comments
|
Bom dia! Há uma diferença importante na API atual: Para separar download de materialização em memória, teste primeiro um lote pequeno, sem DataFrame: import pysus
paths = pysus.ftp.sih(
state="SP",
year=2024,
month=1,
source="origin",
as_dataframe=False,
)
print(paths)Adapte estado/período aos seus dados. No caminho de download atual, Isso é um teste para isolar a causa, não prova de vazamento nem garantia de memória constante: descompactação/conversão também pode consumir memória. Se o RSS continuar crescendo repetidamente mesmo com lotes pequenos e sem manter os resultados, uma contenção temporária é executar cada lote em um subprocesso sequencial, gravando a saída em disco; ao terminar o processo, o sistema libera sua memória. Pode compartilhar o trecho do loop e a chamada exata que usa? Com isso dá para distinguir retenção dos resultados, materialização do catálogo e crescimento interno durante download/conversão na 2.11.2. |
|
Boa noite Wael El Ghazzawi. Desculpe a demora em responder, depois que alterei a parte do PySUS para não gerar dataframe, somente o Parquet, deixei isso a cargo do meu código, consumo de memória está excelente! Com isso, posso criar os scripts em separado (SIM, SIH etc.), crio diretórios de cache de PySUS separados (por causa do DuckDB não aceitar concorrência), baixo os arquivos. |
Uh oh!
There was an error while loading. Please reload this page.
Bom dia.
Estou trabalhando em um projeto que estou baixando os arquivos do SIM e SIH, primeiro usando o recurso de dataframe Pandas, depois, migrei para FTP, ambos os casos, conforme o processo de download vai andando, consumo de memória vai subindo de modo desproporcional, ao ponto de ter que monitorar o processo de download para forçar sua parada, ciclo se repete.
Estou usando a última versão 2.11.2 com Linux Debian versão 13.
Obrigado pela ajuda.
All reactions