Ich schreibe ein sehr einfaches Skript, das die Anzahl der Vorkommen in einer Datei zählt. Die Dateigröße beträgt ca. 300 MB (15 Millionen Zeilen) und hat 3 Spalten. Da ich die Datei zeilenweise lese, erwarte ich nicht, dass Python viel Speicher verbraucht. Maximum würde etwas über 300Mb sein, um das Zählung Dictionnary zu speichern.Python übermäßigen Speicherverbrauch mit einfachen Skript
Wenn ich jedoch auf Aktivitätsmonitor schaue, gehe die Speicherbelegung über 1,5 GB. Was mache ich falsch ? Wenn es normal ist, könnte das bitte jemand erklären? Dank
import csv
def get_counts(filepath):
with open(filepath,'rb') as csvfile:
reader = csv.DictReader(csvfile, fieldnames=['col1','col2','col3'], delimiter=',')
counts = {}
for row in reader:
key1 = int(row['col1'])
key2 = int(row['col2'])
if (key1, key2) in counts:
counts[key1, key2] += 1
else:
counts[key1, key2] = 1
return counts
Haben Sie die Methode 'csv.reader' versuchen:' data = csv.reader (open (csvfile), delimiter = '') 'und dann' für Zeile in Daten: '? [Quelle] (http://lethain.com/handling-yy-large-csv-and-xml-files-in-python/) – Till
Sie könnten auch 'count [key1, key2] = count.get ((key1 , key2), 0) + 1 'anstelle der 'if else'-Anweisung. – Till
Vielleicht ist es nur ein Problem mit der Einfügung, aber die dritte Zeile ist nicht eingerückt (und daher auch die vierte Zeile), was dazu führt, dass Ihr Skript einen Fehler ausgibt. –