2011-01-30 16 views
26

La descrizione completa memoryview può essere trovato here:Quando dovrebbe essere usato un memoryview?

Creare un memoryview che fa riferimento a obj. obj deve supportare il protocollo del buffer. Gli oggetti incorporati che supportano il protocollo del buffer includono bytes e bytearray.

A memoryview ha l'idea di un elemento , che è l'unità di memoria atomico gestito dall'oggetto originari obj. Per molti tipi semplici come bytes e bytearray, un elemento è un singolo byte, ma altri tipi come array.array possono avere elementi più grandi.

+0

stavo chiedendo lo stesso da google, ho appena trovato [qualcosa di rilevante] (http://eli.thegreenplace.net/2011/11/28/less-copies-in-python-with-the-buffer-protocol- e-memoryviews) – dcsordas

risposta

19

Un memoryview è essenzialmente una struttura di array NumPy generalizzata in Python stesso (senza matematica). Permette di condividere la memoria tra strutture di dati (cose come immagini PIL, basi di dati SQLlite, array NumPy, ecc.) Senza prima copiarle. Questo è molto importante per i grandi set di dati.

Con esso puoi fare cose come memory-map in un file molto grande, tagliare un pezzo di quel file e fare calcoli su quel pezzo (più semplice se usi NumPy).

2

Dalla documentazione, Decido che è usato per "accedere ai dati interni di un oggetto che supporta il protocollo di buffer senza copiare", in modo da poter fare le cose con enormi quantità di dati senza riempire la memoria. Non so se vuoi degli esempi, sfortunatamente non riesco a pensarne nessuno.

+6

Grazie, ma ho letto anche questo nel documento, che non era molto informativo. –

Problemi correlati