Effizientes Iterieren von Iteratoren in Python mithilfe von Chunks
Bei der Arbeit mit großen Datensätzen ist es notwendig, Daten in kleineren Batches oder Chunks zu verarbeiten. Dies hilft, die Speichernutzung zu verwalten und die Leistung zu verbessern. Eine Möglichkeit, dies zu erreichen, besteht darin, die Iteratoren von Python zu verwenden, um die Daten in Blöcke der gewünschten Größe aufzuteilen.
Das Grouper-Rezept
In der itertools-Dokumentation ist der Grouper() Das Rezept bietet eine praktische Möglichkeit, Daten in Blöcke fester Länge zu gruppieren. Es kann jedoch sein, dass unvollständige Blöcke nicht wie gewünscht verarbeitet werden.
Das Batch-Rezept
Eine neuere Ergänzung zu den itertools-Rezepten ist die Funktion „batched()“. Es zeichnet sich dadurch aus, dass es Daten in Tupeln einer bestimmten Länge stapeln kann. Im Gegensatz zu grouper() verarbeitet batched() explizit unvollständige Blöcke und gibt einen kürzeren Stapel ohne Ausnahmen oder Füllwerte zurück.
Sequenzspezifische Lösung
Wenn Sie arbeiten Nur mit Sequenzen können Sie einen einfacheren Ansatz verwenden:
(my_list[i:i + chunk_size] for i in range(0, len(my_list), chunk_size))
Diese Lösung behält den Typ der Originalsequenz bei und verarbeitet sie elegant der letzte Block.
Python 3.12 und itertools.batched
In Python 3.12 und höher kann itertools.batched direkt verwendet werden. Es bietet die gleiche Funktionalität wie das Batched()-Rezept:
itertools.batched(iterable, n) # Batch data into tuples of length n
Fazit
Die Auswahl der geeigneten Methode hängt von Ihren spezifischen Anforderungen und der Python-Version ab, die Sie verwenden verwenden. Für eine allgemeine und flexible Stapelverarbeitung wird das Rezept „batched()“ oder „itertools.batched“ von Python 3.12 empfohlen. Für sequenzspezifische Aufgaben bietet die sequenzbasierte Lösung Einfachheit und Typerhaltung.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Chunks effizient große Datensätze in Python durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!