2011-01-30 13 views
26

La descripción completa de memoryview se puede encontrar here:¿Cuándo se debe usar una vista de memoria?

Crear una memoryview que hace referencia a obj. obj debe ser compatible con el protocolo de almacenamiento intermedio. Los objetos incorporados que admiten el protocolo de almacenamiento intermedio incluyen bytes y bytearray.

A memoryview tiene la noción de un elemento , que es la unidad de memoria atómica manejado por el objeto originario obj. Para muchos tipos simples como bytes y bytearray, un elemento es un byte único, pero otros tipos como array.array pueden tener elementos más grandes.

+0

Estaba preguntando lo mismo de Google, acabo de encontrar [algo relevante] (http://eli.thegreenplace.net/2011/11/28/less-copies-in-python-with-the-buffer-protocol- and-memoryviews) – dcsordas

Respuesta

19

Una vista de memoria es esencialmente una estructura de matriz NumPy generalizada en Python (sin las matemáticas). Le permite compartir memoria entre estructuras de datos (cosas como imágenes PIL, bases de datos SQLlite, matrices NumPy, etc.) sin copiar primero. Esto es muy importante para grandes conjuntos de datos.

Con él se pueden hacer cosas como mapa de memoria en un archivo muy grande, cortar un trozo de ese archivo y hacer cálculos en esa pieza (más fácil si está utilizando NumPy).

2

De la documentación, me imagino que es usado para "acceder a los datos internos de un objeto que admite el protocolo de búfer sin copiar", por lo que puede hacer cosas con enormes cantidades de datos sin llenar su memoria. No sé si quieres ejemplos, pero no puedo pensar en ninguno, desafortunadamente.

+6

Gracias, pero también lo leí en el documento, que no fue muy informativo. –

Cuestiones relacionadas