memoryview() în Python

Bytes Python 3.0+

Oferă acces la memoria unui obiect binar (bytes, bytearray) fără să o copieze.

Sintaxă
memoryview(obiect)

Ce face memoryview()

O felie dintr-un bytes creează o copie. O felie dintr-un memoryview nu copiază nimic: arată spre aceeași memorie. Pentru date mari (fișiere, imagini, pachete de rețea) economisești memorie și timp.

Dacă obiectul de bază este modificabil (bytearray), modificările făcute prin memoryview se văd în original. tobytes() creează o copie bytes, iar release() eliberează legătura.

Parametri

Parametru Descriere
obiect Un obiect care suportă protocolul buffer: bytes, bytearray, array.array…

Ce returnează

Un obiect memoryview.

Exemple

Exemplul 1: Modificare fără copiere

date = bytearray(b"abcdef")
vedere = memoryview(date)
bucata = vedere[2:4]
bucata[:] = b"XY"
print(date)
print(bucata.tobytes(), len(vedere), vedere.nbytes)

Rezultat

bytearray(b'abXYef')
b'XY' 6 6

Greșeli frecvente

  • Încerci să scrii printr-un memoryview al unui bytes: TypeError: cannot modify read-only memory. Folosește un bytearray.

Comenzi înrudite

  • bytes() și bytearray(): Secvențe de octeți (valori 0-255) pentru date binare: fișiere, rețea, text codificat.
  • slice(): Creează un obiect „felie”, echivalentul lui [start:stop:pas], care poate fi salvat și refolosit.