用法:
class memoryview(object)创建一个引用
object的memoryview。object必须支持缓冲协议。支持缓冲区协议的内置对象包括bytes和bytearray。memoryview具有element的概念,它是由原始object处理的原子内存单元。对于许多简单类型,例如bytes和bytearray,一个元素是单个字节,但其他类型,例如array.array可能有更大的元素。len(view)等于tolist的长度。如果view.ndim = 0,则长度为 1。如果view.ndim = 1,则长度等于视图中的元素数。对于更高维度,长度等于视图的嵌套列表表示的长度。itemsize属性将为您提供单个元素中的字节数。memoryview支持切片和索引以公开其数据。一维切片会产生一个子视图:>>> v = memoryview(b'abcefg') >>> v[1] 98 >>> v[-1] 103 >>> v[1:4] <memory at 0x7f3ddc9f4350> >>> bytes(v[1:4]) b'bce'如果
format是来自struct模块的本机格式说明符之一,则还支持使用整数或整数元组进行索引,并返回具有正确类型的单个element。一维内存视图可以用整数或one-integer 元组索引。多维内存视图可以用正好ndim整数的元组索引,其中ndim是维数。零维内存视图可以用空元组索引。这是一个非字节格式的示例:
>>> import array >>> a = array.array('l', [-11111111, 22222222, -33333333, 44444444]) >>> m = memoryview(a) >>> m[0] -11111111 >>> m[-1] 44444444 >>> m[::2].tolist() [-11111111, -33333333]如果底层对象是可写的,则 memoryview 支持一维切片分配。不允许调整大小:
>>> data = bytearray(b'abcefg') >>> v = memoryview(data) >>> v.readonly False >>> v[0] = ord(b'z') >>> data bytearray(b'zbcefg') >>> v[1:4] = b'123' >>> data bytearray(b'z123fg') >>> v[2:3] = b'spam' Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: memoryview assignment: lvalue and rvalue have different structures >>> v[2:6] = b'spam' >>> data bytearray(b'z1spam')具有“B”、‘b’ or ‘c’ 格式的可散列(只读)类型的一维内存视图也是可散列的。哈希定义为
hash(m) == hash(m.tobytes()):>>> v = memoryview(b'abcefg') >>> hash(v) == hash(b'abcefg') True >>> hash(v[2:4]) == hash(b'ce') True >>> hash(v[::-2]) == hash(b'abcefg'[::-2]) True在 3.3 版中更改:现在可以对一维内存视图进行切片。格式为“B”、‘b’ or ‘c’ 的一维内存视图现在是可散列的。
在 3.4 版中更改:memoryview 现在自动注册
collections.abc.Sequence在 3.5 版中更改:memoryviews 现在可以用整数元组索引。
memoryview有几种方法:还有几个可用的只读属性:
相关用法
- Python memoryview.itemsize用法及代码示例
- Python memoryview.nbytes用法及代码示例
- Python memoryview.cast用法及代码示例
- Python memoryview.obj用法及代码示例
- Python memoryview.hex用法及代码示例
- Python memoryview()用法及代码示例
- Python memoryview.toreadonly用法及代码示例
- Python memoryview.release用法及代码示例
- Python memoryview.tolist用法及代码示例
- Python memoryview.__eq__用法及代码示例
- Python memoryview.tobytes用法及代码示例
- Python statistics median_high()用法及代码示例
- Python statistics median_low()用法及代码示例
- Python statistics median()用法及代码示例
- Python statistics median_grouped()用法及代码示例
- Python mxnet.symbol.op.broadcast_logical_xor用法及代码示例
- Python mxnet.test_utils.get_zip_data用法及代码示例
- Python mxnet.ndarray.op.uniform用法及代码示例
- Python mxnet.symbol.op.log_softmax用法及代码示例
- Python mxnet.symbol.space_to_depth用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 memoryview。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
