Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich große CSV-Dateien in Python 2.7 effizient lesen?
Lesen großer CSV-Dateien mit Python 2.7
Die Bewältigung der Herausforderung des Lesens riesiger CSV-Dateien mit Python 2.7 kann zu Speicherproblemen führen, insbesondere bei Dateien mehr als 300.000 Zeilen. Um diese Hürde zu überwinden, ist es wichtig, das Einlesen der gesamten Datei in den Speicher zu vermeiden.
Speicherverwaltungstechniken
Der Einsatz von Generatoren ermöglicht eine speichereffiziente Verarbeitung. Anstatt alle Zeilen in einer Liste zu akkumulieren, geben Sie jede Zeile einzeln aus. Dieser Ansatz, der durch den Generator der Funktion „getstuff“ veranschaulicht wird, reduziert den Speicherverbrauch erheblich.
Berücksichtigen Sie außerdem Optimierungen wie die Funktionen „dropwhile“ und „takewhile“ aus dem Modul „itertools“. Diese ermöglichen eine effiziente Filterung durch das Überspringen irrelevanter Zeilen und sparen so zusätzlich Speicher.
Leistungsoptimierung
Über die Speicherverwaltung hinaus geht es bei der Leistungssteigerung um die Minimierung unnötiger Vorgänge. Die getdata-Funktion sollte direkt über den getstuff-Generator iterieren und so unnötige Zwischenlisten vermeiden.
Beispielverwendung
Das Überarbeiten des Codes mithilfe von Generatoren führt zu einer viel effizienteren Lösung:
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
Dieser Code verarbeitet effektiv jeweils eine Zeile, wodurch die Speichernutzung erheblich reduziert und die Leistung verbessert wird, selbst bei umfangreichen CSV-Dateien Dateien.
Das obige ist der detaillierte Inhalt vonWie kann ich große CSV-Dateien in Python 2.7 effizient lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!