Python Memoryview vs Bytearray?

d-d*_*d-d 5 python arrays memoryview

我应该什么时候在 Python2.7 中使用memoryview?我只是找不到在常规bytearray上使用它的任何好处。此外,memoryview不支持字符串方法,这使其绝对无法使用。我错了吗?

d-d*_*d-d 6

好的,最后,在网络软件上工作,我发现了一个 memoryviews 的用例:当我们有一个固定大小的套接字缓冲区并且我们想要对其执行快速切片时(从任何给定位置读取/写入数据,而无需创建额外的副本在内存中),像这样:

buf = bytearray(4096)
mview = memoryview(buf)
socket.recv_into(mview)
print mview[256:]
Run Code Online (Sandbox Code Playgroud)

所以,在某些情况下,在字节数组上有一个内存视图是很方便的。对于这种方案,您应该记住的唯一一件事是:在字节数组上创建内存视图后,您无法更改字节数组的大小,直到删除此内存视图,字节数组将被限制为其初始大小并抛出BufferError: Existing exports of data: object cannot be re-sized错误每次尝试在那里添加更多数据。