Pickle 缓冲对象

Added in version 3.8.

pickle.PickleBuffer 对象包装了一个 提供缓冲区的对象 用于配合 pickle 模块进行带外数据传输。

PyTypeObject PyPickleBuffer_Type

这个 PyTypeObject 的实例表示 Python pickle 缓冲区类型。 这与 Python 层级的 pickle.PickleBuffer 是同一对象。

int PyPickleBuffer_Check(PyObject *op)

Return true 如果 op 是一个 pickle 缓冲区实例则返回真值。 此函数总是会成功执行。

PyObject *PyPickleBuffer_FromObject(PyObject *obj)

基于 obj 创建一个 pickle 缓冲区。

如果 obj 不支持 缓冲区协议 则此函数执行将失败。

成功时,返回一个新的 pickle 缓冲区实例。 失败时,设置一个异常并返回 NULL

等同于在 Python 中调用 pickle.PickleBuffer 并传入 obj

const Py_buffer *PyPickleBuffer_GetBuffer(PyObject *picklebuf)

获取一个指向 pickle 缓冲区所包装的底层 underlying Py_buffer 的指针。

只要 picklebuf 保持存活而未被释放则返回的指针就将有效。 调用方不可修改或释放返回的 Py_buffer。 如果 pickle 缓冲区被释放,则会引发 ValueError

成功时,返回一个指向缓冲区视图的指针。 失败时,设置一个异常并返回 NULL

int PyPickleBuffer_Release(PyObject *picklebuf)

释放由 PickleBuffer 占用的底层缓冲区。

成功时返回 0。 失败时,设置一个异常并返回 -1

等同于在 Python 中调用 pickle.PickleBuffer.release()