【发布时间】:2015-12-27 11:00:09
【问题描述】:
我想公开对象的缓冲区协议,就像 Cython 文档的 in this example 一样,但是我需要使用 CFFI 来执行此操作,但我找不到任何示例来公开缓冲区协议。
【问题讨论】:
-
我认为这没有意义。实现缓冲协议最终涉及writing some C functions yourself和adding them to a type defined using the Python C-API。 (顺便说一句,Cython 提供了一种从“类似 Python 的代码”中执行此操作的方法。CFFI 是一种从 Python 调用现有 C 库的方法,但不是编写新的 C 代码的方法。
-
不完全是,请参阅这些docs 中的
set_source方法。它们还提供了一个ffi.buffer()方法来返回缓冲区对象,但是这些对象不公开缓冲区协议。 -
啊——够公平的。我的错误(我认为)。快速浏览 cffi (bitbucket.org/cffi/cffi/src/…) 的源代码表明缓冲区应该公开 Python 缓冲区协议。我不太确定我是否完全理解您的问题,但我会稍微戳一下......
-
你是对的,cffi缓冲区已经暴露了缓冲区协议,谢谢你的帮助。请将此添加为此问题的答案,然后我可以接受它作为答案。
标签: python c cython python-cffi