基本上我想制作一个 Python 程序调用用 C 编写的函数。
所以(据我所知)我的选择是:
- CTypes/CFFI
- Python 二进制模块
- 用 C 编写一个 python 接口(interface),将我的 C 模块转换为二进制 python 模块
- 优点:
- 表现 ?
- 缺点:
- 所有类型转换都是用 C 语言完成的。使用 [SIP][3] 这可能是自动化的。
将 C 模块转换为 python 二进制模块真的更快吗?
这两种解决方案都支持向 C 函数发送 python 回调吗?
SIP 是生成 python 接口(interface)的好选择吗?还有其他选择吗?
它们还有其他特殊性吗?
最佳答案
我只是在回顾我发布的与此相关的旧选项列表: http://stromberg.dnsalias.org/~strombrg/speeding-python/
如果您只针对 CPython(2.x 或 3.x),我可能会选择 Cython。
如果你也想在 Pypy 上运行,CFFI 可能不错;我还没试过,但听起来不错。虽然它并不完全像 ctypes - ctypes 更接近 ABI 级别,而 CFFI 更接近 API 级别 - 这很好。
如果您也希望能够在 Jython 上运行,子进程可能是您最好的选择。
关于Python-C 集成 : Ctypes, CFFI 或创建二进制模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17755697/