MemoryView objects

memoryview对象将C级buffer interface暴露为Python对象,然后像任何其他对象一样传递它。

PyObject *PyMemoryView_FromObject(PyObject *obj)

从提供缓冲区接口的对象创建一个memoryview对象。如果obj支持可写缓冲区导出,则memoryview对象将被读/写,否则它可能是只读的或读/写由导出器自行决定。

PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)

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

版本3.3中的新功能。

PyObject *PyMemoryView_FromBuffer(Py_buffer *view)

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

PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)

从定义缓冲区接口的对象创建一个memoryview对象到contiguous内存块(在'C'或'F'ortran 顺序)。如果内存是连续的,memoryview对象指向原始内存。否则,将创建一个副本,并且memoryview指向一个新的字节对象。

int PyMemoryView_Check(PyObject *obj)

如果对象obj是一个memoryview对象,则返回true。目前不允许创建memoryview的子类。

Py_buffer *PyMemoryView_GET_BUFFER(PyObject *mview)

返回指向memoryview的输出缓冲区的私有副本的指针。mview 必须是一个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 必须是一个memoryview实例。