6

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

4

1 回答 1

7

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

buf = bytearray(4096)
mview = memoryview(buf)
socket.recv_into(mview)
print mview[256:]

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

于 2016-11-04T07:22:14.480 回答