Maison  >  Article  >  développement back-end  >  Comment puis-je lire efficacement des fichiers CSV volumineux dans Python 2.7 ?

Comment puis-je lire efficacement des fichiers CSV volumineux dans Python 2.7 ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-19 16:42:03172parcourir

How Can I Efficiently Read Large CSV Files in Python 2.7?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn