Lecture de fichiers CSV volumineux avec Python 2.7
Relever le défi de la lecture de fichiers CSV colossaux avec Python 2.7 peut évoquer des problèmes de mémoire, en particulier avec les fichiers dépassant 300 000 lignes. Pour surmonter cet obstacle, il est crucial d'éviter de lire l'intégralité du fichier en mémoire.
Techniques de gestion de la mémoire
L'emploi de générateurs permet un traitement efficace en mémoire. Au lieu d'accumuler toutes les lignes d'une liste, donnez chaque ligne individuellement. Cette approche, illustrée par le générateur de la fonction getstuff, réduit considérablement la consommation de mémoire.
De plus, envisagez des optimisations telles que les fonctions dropwhile et takewhile du module itertools. Ceux-ci facilitent un filtrage efficace en ignorant les lignes non pertinentes, économisant ainsi davantage la mémoire.
Optimisation des performances
Au-delà de la gestion de la mémoire, l'amélioration des performances implique de minimiser les opérations inutiles. La fonction getdata doit parcourir directement le générateur getstuff, éliminant ainsi les listes intermédiaires inutiles.
Exemple d'utilisation
Retravailler le code à l'aide de générateurs donne une solution beaucoup plus efficace :
def getstuff(filename, criterion): ... # Same generator code as above def getdata(filename, criteria): ... # Same generator code as above # Process rows directly for row in getdata(somefilename, sequence_of_criteria): ... # Process the current row
Ce code traite efficacement une ligne à la fois, réduisant considérablement l'utilisation de la mémoire et améliorant les performances, même pour d'immenses fichiers CSV. fichiers.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!