使用Cython作为Python到C转换器

时间:2011-08-18 19:11:22

标签: python c cython

我有庞大的Python模块(+8000行)。它们通过读写硬件寄存器,通过串口与硬件平台交互,基本上有很多功能。

它们不是数值算法。因此,应用程序只是读/写硬件寄存器/内存。我使用这些库来编写自定义脚本。最后,我需要将所有这些东西移动到我的硬件上的嵌入式处理器中以获得更好的控制,然后我就开始从PC启动事件,剩下的就是硬件。

所以我需要将它们转换为C.如果我可以通过自动工具将我的脚本转换为C,这将为我节省大量时间。这就是我被Cython吸引的原因。效率并不重要我的代码不是数字计算器。但生成的代码应该相对较小,以适应我有限的内存(几百千字节)。

我可以使用Cython作为C的自定义Python脚本的转换器吗?我的猜测是肯定的,在这种情况下我可以使用这些.c文件在我的硬件中运行吗?我的猜测不是因为我必须在我的硬件中使用Cython以便它们运行。但是,如果只是创建一些.c文件,我可以通过单独使用它,因为代码没有使用Python的许多功能,它只是将它用作快速实现脚本。

2 个答案:

答案 0 :(得分:40)

  1. 是的,这是Cython的核心。但是......
  2. 您不需要Cython,但是,您需要libpython。您可能觉得它没有使用那么多Python功能,但我认为如果您尝试这样做,您会发现它不是真的 - 您将无法将您的程序与其对libpython的依赖分开仍在使用Python语言。
  3. 另一个选项是PyPy,特别是它是translation toolchain不是 PyPy Python解释器。它允许您将RPython(Python语言的一个子集)转换为C.如果您确实没有使用许多Python语言功能或库,这可能会有效。

    PyPy主要被称为替代Python实现,但它也是一组用于将动态语言编译为各种形式的工具。这就是允许将用Python编写的Python的PyPy实现编译为机器代码。

    如果C ++可用,Nuitka是一个Python到C ++的编译器,适用于常规Python,而不仅仅是RPython(这是使用了swingskin和PyPy)。

答案 1 :(得分:2)

如果C ++可用于该嵌入式平台,则有shed skin,它将python转换为c ++。