MemoryView对象

A memoryview 对象公开C级别 buffer interface 作为一个python对象,然后可以像其他对象一样传递。

PyObject *PyMemoryView_FromObject(PyObject *obj)
Return value: New reference.

从提供缓冲区接口的对象创建memoryview对象。如果 obj 支持可写缓冲区导出,memoryView对象将被读/写,否则它可能是只读的,也可能是由导出程序决定的读/写。

PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)
Return value: New reference.

使用创建MemoryView对象 mem 作为底层缓冲区。 flags 可以是其中之一 PyBUF_READPyBUF_WRITE .

3.3 新版功能.

PyObject *PyMemoryView_FromBuffer(Py_buffer *view)
Return value: New reference.

创建一个封装给定缓冲区结构的memoryView对象 view . 对于简单字节缓冲区, PyMemoryView_FromMemory() 是首选功能。

PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)
Return value: New reference.

将memoryView对象创建到 contiguous 内存块(在“c”或“f”或“ortran”中) 秩序 )来自定义缓冲区接口的对象。如果内存是连续的,则memoryView对象指向原始内存。否则,将生成一个副本,并且memoryView指向一个新的bytes对象。

int PyMemoryView_Check(PyObject *obj)

如果对象的值为True,则返回TRUE obj 是一个内存视图对象。当前不允许创建的子类 memoryview 。此功能总是成功的。

Py_buffer *PyMemoryView_GET_BUFFER(PyObject *mview)

返回指向导出器缓冲区的memoryview私有副本的指针。 实体化视图 must 是一个memoryview实例;这个宏不检查它的类型,您必须自己检查,否则会有崩溃的风险。

Py_buffer *PyMemoryView_GET_BASE(PyObject *mview)

Return either a pointer to the exporting object that the memoryview is based on or NULL if the memoryview has been created by one of the functions PyMemoryView_FromMemory() or PyMemoryView_FromBuffer(). mview must be a memoryview instance.