Ich bin ziemlich neu zu Python und Programmierung im Allgemeinen, aber ich versuche, eine "gleitende Fenster" Berechnung über eine Tab-getrennte .TXT-Datei, die etwa 7 Millionen Zeilen mit Python enthält . Was ich mit sliding window meine, ist, dass es eine Berechnung über etwa 50.000 Zeilen ausführt, die Nummer meldet und dann ungefähr 10.000 Zeilen nach oben bewegt und die gleiche Berechnung über weitere 50.000 Zeilen durchführt. Ich habe die Berechnung und das "gleitende Fenster" richtig funktioniert und es läuft gut, wenn ich es auf einer kleinen Teilmenge meiner Daten teste. Wenn ich jedoch versuche, das Programm über meinen gesamten Datensatz auszuführen, ist es unglaublich langsam (ich habe es jetzt für ungefähr 40 Stunden laufen lassen). Die Mathematik ist ziemlich einfach, also denke ich nicht, dass es so lange dauern sollte.Verarbeitung einer großen .TXT-Datei in Python effizient
Die Art, wie ich gerade meine .txt-Datei lese, ist mit dem Modul csv.DictReader. Mein Code ist wie folgt:
file1='/Users/Shared/SmallSetbee.txt'
newfile=open(file1, 'rb')
reader=csv.DictReader((line.replace('\0','') for line in newfile), delimiter="\t")
Ich glaube, dass dies ein Wörterbuch macht auf einmal aus allen 7 Millionen Zeilen, die ich denke bin der Grund, warum es nach unten, so viel für die größere Datei verlangsamt werden könnte.
Da ich nur daran interessiert bin, meine Berechnung über "Chunks" oder "Windows" von Daten gleichzeitig auszuführen, gibt es eine effizientere Methode, nur bestimmte Linien gleichzeitig einzulesen, die Berechnung durchzuführen und dann mit zu wiederholen ein neues spezifiziertes "Stück" oder "Fenster" von spezifizierten Linien?
Dies macht kein Wörterbuch für alle Zeilen gleichzeitig. Es erstellt ein Wörterbuch für jede Zeile. Dies bedeutet, dass das von Ihnen gepostete Snippet nicht die Ursache für Ihre Leistungsprobleme ist. Vielleicht könnten Sie uns etwas mehr Code zeigen? –
Ich vermute, dass Sie, wenn Sie Berechnungen über große Mengen von tabellenartigen Daten durchführen, Pandas betrachten sollten: http://pandas.pydata.org/pandas-docs/dev/io.html#iterating-through- files-chunk-by-chunk Alles, was du zu tun versuchst, wurde wahrscheinlich schon 1000 mal besser gemacht. – Iguananaut
Sie werden diese Berechnung auf 696 "Windows" ausführen. Wie lange dauert es für ein einzelnes Fenster in einer 50k-Zeilendatei? –