Siddharth Kshirsagar

Follow

1 agosto, 2020 – 2 min read

Foto di Robert Thiemann su Unsplash
  1. StringIO e BytesIO sono metodi che manipolano dati stringa e bytes in memoria.
  2. StringIO è usato per i dati stringa e BytesIO è usato per i dati binari.
  3. Queste classi creano oggetti simili a file che operano su dati stringa.
  4. Le classi StringIO e BytesIO sono più utili negli scenari in cui è necessario imitare un normale file.

In questo caso i dati non saranno tenuti in memoria (RAM) dopo essere stati scritti nel file

In questo caso invece di scrivere il contenuto in un file, viene scritto in un buffer di memoria.(un pezzo di RAM)

essenzialmente scrivere usando la classe BytesIO è equivalente a

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

Allora perché definiamo io.BytesIO() e perché non usare la concatenazione di bytes?

Ans: Ottimizzazione e Performance

C’è un altro modo per leggere dati in un buffer di memoria mutabile?

Sì, possiamo usare il metodo readinto() di file a object.

  1. Il metodo readinto() di file può essere usato per riempire di dati qualsiasi array preallocato. Inclusi gli array creati attraverso il modulo numpy.
  2. A differenza del normale metodo read() il metodo readinto() riempie il contenuto di un buffer esistente piuttosto che allocare nuovi oggetti e restituirli.
  3. Così possiamo usarlo per evitare di fare allocazioni di memoria extra.

Esempi:

Vuoi leggere dati binari direttamente in un buffer mutabile senza alcuna copia intermedia per manipolare i dati binari

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *