MemoryView 对象

一个 memoryview 对象将 C 级的 缓冲区接口 作为 Python 对象公开,然后可以像其他任何对象一样传递。

PyObject *PyMemoryView_FromObject(PyObject *obj)
返回值:新引用。属于 稳定 ABI 的一部分。

从提供缓冲区接口的对象创建 memoryview 对象。如果 obj 支持可写缓冲区导出,则 memoryview 对象将为读/写,否则它可以是只读或读/写,由导出者决定。

PyBUF_READ

请求只读缓冲区的标志。

PyBUF_WRITE

请求可写缓冲区的标志。

PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)
返回值:新引用。从 3.7 版开始属于 稳定 ABI 的一部分。

使用 mem 作为底层缓冲区创建一个 memoryview 对象。flags 可以是 PyBUF_READPyBUF_WRITE 之一。

在 3.3 版中添加。

PyObject *PyMemoryView_FromBuffer(const Py_buffer *view)
返回值:新引用。从 3.11 版开始属于 稳定 ABI 的一部分。

创建一个 memoryview 对象,包装给定的缓冲区结构view。对于简单的字节缓冲区,PyMemoryView_FromMemory() 是首选函数。

PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)
返回值:新引用。属于 稳定 ABI 的一部分。

从定义缓冲区接口的对象中创建一个 memoryview 对象,指向一段连续的内存块(以“C”或“F”ortran order 顺序)。如果内存是连续的,memoryview 对象指向原始内存。否则,会进行复制,memoryview 指向一个新的字节对象。

buffertype 可以是 PyBUF_READPyBUF_WRITE 之一。

int PyMemoryView_Check(PyObject *obj)

如果对象obj 是一个 memoryview 对象,则返回 true。目前不允许创建 memoryview 的子类。此函数始终成功。

Py_buffer *PyMemoryView_GET_BUFFER(PyObject *mview)

返回一个指向 memoryview 的导出者的缓冲区的私有副本的指针。mview 必须 是一个 memoryview 实例;此宏不检查其类型,您必须自己检查,否则您将面临崩溃的风险。

PyObject *PyMemoryView_GET_BASE(PyObject *mview)

返回一个指向 memoryview 所基于的导出对象或 NULL 的指针,如果 memoryview 是由 PyMemoryView_FromMemory()PyMemoryView_FromBuffer() 函数创建的。mview 必须 是一个 memoryview 实例。