¿Cuándo se debe usar un memoryview? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

La descripción completa de memoryview se puede encontrar aquí:

Crea un memoryviewque haga referencia a obj. obj debe soportar el protocolo buffer. Objetos incorporados que admiten el búfer el protocolo incluye bytes y bytearray.

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

Author: Alex Riley, 2011-01-30

2 answers

Un memoryview 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 puede hacer cosas como mapear la memoria a un archivo muy grande, cortar una parte de ese archivo y hacer cálculos en esa parte (más fácil si está usando NumPy).

 20
Author: Travis Oliphant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-17 04:22:59

De la documentación, me imagino que se utiliza para "acceder a los datos internos de un objeto que soporta el protocolo buffer sin copiar", por lo que puede hacer cosas con grandes trozos de datos sin llenar su memoria. No se si quieres ejemplos, pero no se me ocurre ninguno, desafortunadamente.

 3
Author: Robin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-30 20:52:18