#python #arrays #memoryview
#python #массивы #просмотр памяти
Вопрос:
Когда я должен использовать memoryview в Python2.7? Я просто не могу найти никакой выгоды от его использования поверх обычного bytearray. Также memoryview не поддерживает строковые методы, что делает его абсолютно непригодным для использования. Я ошибаюсь?
Ответ №1:
Хорошо, наконец, работая над сетевым программным обеспечением, я нашел вариант использования memoryviews: когда у нас есть буфер сокета фиксированного размера, и мы хотим выполнить быструю нарезку на нем (чтение / запись данных из любой заданной позиции без создания дополнительных копий в памяти), что-то вроде этого:
buf = bytearray(4096)
mview = memoryview(buf)
socket.recv_into(mview)
print mview[256:]
Итак, в некоторых случаях удобно иметь memoryview в bytearray.
Единственное, что вы должны иметь в виду при такой схеме: после того, как вы создали memoryview в bytearray, вы не можете изменить размер bytearray, пока вы не удалите этот memoryview, bytearray будет ограничен его начальным размером и выдавать BufferError: Existing exports of data: object cannot be re-sized
ошибку при каждой попытке добавить туда больше данных.