gpt4 book ai didi

python - 将 python 库绑定(bind)到 C

转载 作者:太空狗 更新时间:2023-10-29 20:27:45 30 4
gpt4 key购买 nike

我想做的与大多​​数人想做的相反:我有一个用 Python 编写的库,我想让它对 C(可能还有其他语言)可用。

我知道对此的典型答案是使用 C 的 Python 库,即:

#include <Python.h>

int
main(int argc, char *argv[])
{
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\n"
"print 'Today is',ctime(time())\n");
Py_Finalize();
return 0;
}

(来源:http://docs.python.org/extending/embedding.html#very-high-level-embedding)

但是,这对我来说似乎不太理想:

  • 它很丑
  • 仅适用于 C

相反,我想要的是一种将我的库绑定(bind)到很多语言(包括 C)的方法。我不关心自动包装器生成:我的库非常简单,所以我可以编写胶水代码。

目前,我想出的唯一解决方案是使用与上述类似的代码将我的库绑定(bind)到 C。然后使用 SWIG将 C 库绑定(bind)到其他语言。

还有更好的吗?

最佳答案

C 是 Lingua franca的编程。所以我会说你的方法是正确的。为 C 创建绑定(bind),然后使用 SWIG 和其他语言的 FFI 等工具绑定(bind)到 C。

只有一个想法浮现在脑海中。今天我们看到 HTTP 作为一个新的 Lingua franca 出现适用于所有类型的 API 和接口(interface)。因此,可以考虑创建一个用 Python 编写的小 Web 服务,提供一些 REST 接口(interface)。但显然这只在某些情况下才有意义。

当然,一旦你决定在一个单独的进程中运行你的 python 库,就有可能进行进程间通信,如命名管道或套接字和工具包,如 Apache Thrift , Google Protocol Buffers0MQ .

关于python - 将 python 库绑定(bind)到 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10621536/

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