Siddharth Kshirsagar

Follow

1. August, 2020 – 2 min read

Foto von Robert Thiemann auf Unsplash
  1. StringIO und BytesIO sind Methoden, die String- und Bytes-Daten im Speicher manipulieren.
  2. StringIO wird für String-Daten und BytesIO für Binärdaten verwendet.
  3. Diese Klassen erzeugen dateiähnliche Objekte, die auf String-Daten operieren.
  4. Die Klassen StringIO und BytesIO sind am nützlichsten in Szenarien, in denen Sie eine normale Datei imitieren müssen.

In diesem Fall werden die Daten nicht im Speicher (RAM) gehalten, nachdem sie in die Datei geschrieben wurden

In diesem Fall wird der Inhalt nicht in eine Datei, sondern in einen Speicherpuffer geschrieben.(ein Stück Ram)

Wesentlich ist das Schreiben mit der BytesIO Klasse äquivalent zu

space = b""
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"

Warum definieren wir dann io.BytesIO() und warum verwenden wir nicht die Bytes-Verkettung?

Ans: Optimierung und Performance

Gibt es einen anderen Weg, über den wir Daten in einen veränderbaren Speicherpuffer lesen können?

Ja, wir können die readinto()-Methode von file a object verwenden.

  1. Die readinto()-Methode von file kann verwendet werden, um ein beliebiges, vorab zugewiesenes Array mit Daten zu füllen. Dazu gehören auch Arrays, die mit dem Numpy-Modul erstellt wurden.
  2. Im Gegensatz zur normalen read()-Methode füllt die readinto()-Methode den Inhalt eines vorhandenen Puffers, anstatt neue Objekte zu allozieren und zurückzugeben.
  3. Damit können wir zusätzliche Speicherallokationen vermeiden.

Beispiele:

Sie wollen Binärdaten direkt in einen veränderbaren Puffer einlesen, ohne ein Zwischenkopieren zur Manipulation der Binärdaten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.