Était-ce utile?

La solution

memoryview ne fonctionne que sur les objets prenant en charge l'interface de tampon Python 3.array.array en Python 3 le fait, mais pas en Python 2.7.Vous voudrez peut-être déposer un rapport de bogue pour cela.Utilisez simplement use bytearray (ou str si vous l'utilisez en lecture seule).Les deux supportent très bien memoryview.

Autres conseils

Python 2.6+ a deux interfaces tampons différentes, tout comme il a deux types de classes différents: la version classique et la version Python 3.

Extrait du Manuel de référence de l'API Python / C :

Deux exemples d'objets prenant en charge l'interface tampon sont les chaînes et les tableaux. L’objet chaîne expose le contenu des caractères sous la forme orientée octets de l’interface de la mémoire tampon. Un tableau ne peut exposer son contenu que via l'interface de tampon à l'ancienne. Cette limitation ne s'applique pas à Python 3, où les objets memoryview peuvent également être construits à partir de tableaux.

Dans le code Python 2.7, vous pouvez travailler avec les tampons de l'ancien style en utilisant la fonction buffer, et les tampons du nouveau style en utilisant memoryview. Python 3 ne prend en charge que ce dernier.

Une distinction similaire existe dans l'API Python 2 C; PyObject_GetBuffer est pour la nouvelle interface de tampon, PyBuffer_FromObject / PyBuffer_FromReadWriteObject est pour l'ancienne interface de tampon (et devrait fonctionner pour les tableaux). Consultez le lien ci-dessus pour plus d'informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top