【问题标题】:SWIG: Calling Go from PythonSWIG:从 Python 调用 Go
【发布时间】:2012-03-31 23:25:57
【问题描述】:

可以使用 SWIG 从 Python 调用 Go 函数吗?

我在 SWIG 中看到的 Go 示例似乎都是从 Go 调用 C/C++ 函数。

【问题讨论】:

  • 您是否有理由要使用 SWIG 构建 Python to Go 胶水?也许有关您想要做什么的更多信息可能会有所帮助。你想使用特定的 Go 函数,还是想使用任何 Go 函数?你想在 Python 中使用 Go 类吗?
  • 不,不是。这是一个普遍的问题。我想这是不可能的。 SWIG 似乎只支持 C/C++ 作为“后端”。

标签: python go swig


【解决方案1】:

其中一个 Go 编译器生成 C (cgo)。我从未看过它,但可能有一条使用 SWIG 从 Python 调用这些函数的路径。

他们还有 Cython,它将 Python 的一种形式转换为 C,因此通过将两者与 C 作为粘合剂结合起来,并且没有 SWIG,它可以提供另一个更直接的路径。

Python WM 的一位 Cython 用户告诉我,如果小心,Cython 可以生成不需要“魔法”运行时工作的 C。他们的技术是使用 Cython 机制,例如cdef,使他们的 Python 更接近 C。通过更改 Cython 源然后迭代地查看 Cython 输出,他们说他们可以导致 Python 运行时“消失”,并达到“纯'C。这并不理想,但总比没有好。

所以您可能能够使用该机制来包装已编译为 C 的 Go 函数。但是这种方法会限制您使用 Cython,这可能限制太多了。

【讨论】:

  • @Ben - 谢谢。很抱歉,我无法提供更多帮助。我确实希望 Cython 专家可以涉足 :-)
猜你喜欢
  • 1970-01-01
  • 2019-10-28
  • 2014-07-25
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多