gpt4 book ai didi

Python-C 集成 : Ctypes, CFFI 或创建二进制模块

转载 作者:太空狗 更新时间:2023-10-29 21:58:45 25 4
gpt4 key购买 nike

基本上我想制作一个 Python 程序调用用 C 编写的函数。

所以(据我所知)我的选择是:

  • CTypes/CFFI
    • 创建包含 C 函数的 DLL/SO/DyLib 并使用 CTypes 或 CFFI 访问它们.显然 CFFI速度更快,唯一的缺点是必须在 python 中声明所有函数签名。
    • 优点:
      • 不必对我的 C 函数进行任何调整。所有类型转换均在 Python 中完成。
    • 缺点:
      • 表现 ?
  • 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com