MemoryView objects

memoryview对象将 C 级别buffer interface公开为 Python 对象,然后可以像其他任何对象一样来回传递。

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

  • PyObject * PyMemoryView_FromMemory(char ** mem *,Py_ssize_t * size *,int * flags *)
    • 返回值:新参考.

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

版本 3.3 中的新Function。

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

  • PyObject * PyMemoryView_GetContiguous(PyObject ** obj *,int * buffertype *,char * order *)
    • 返回值:新参考.

从定义缓冲区接口的对象向contiguous内存块(在'C'或'F'ortran * order *)中创建一个 memoryview 对象。如果内存是连续的,则 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 *)