gpt4 book ai didi

java - 将算法 C 翻译成 Python

转载 作者:太空狗 更新时间:2023-10-29 19:36:20 25 4
gpt4 key购买 nike

我想将一些 C 代码翻译成 Python 代码或字节码。有问题的 C 代码是我称之为纯算法的代码:独立于平台,没有 I/O,只有算法和内存中的数据结构。

一个例子是正则表达式库。翻译工具将处理库源代码并生成功能等效的 Python 模块,该模块可以在沙盒环境中运行。

您可以推荐哪些具体方法、工具和技术?


注意:Python C 扩展或 ctypes 不是一个选项,因为环境是沙盒化的。

另一个注释:看起来有一个 C-to-Java-bytecode compiler ,他们甚至将 libjpeg 编译为 Java。 Java 字节码+VM 与 CPython 字节码+VM 差别太大吗?

最佳答案

坦率地说,没有办法在不遭受疯狂的性能损失的情况下机械且有意义地将 C 语言转换为 Python。众所周知,Python 远不及 C 速度(使用当前的编译器和解释器),但更糟糕的是 C 所擅长的(位摆弄、整数数学、内存块技巧)Python 非常慢,而 Python 擅长的东西你不能直接用 C 来表达。因此,直接翻译会格外低效,甚至荒谬。

一般来说,更好的方法确实是将 C 保留为 C,并将其包装在 Python 扩展模块中(使用 SWIGPyrexCythonwriting a wrapper manually)或调用 C直接使用库 ctypes .对于已经是 C 或您以后添加的内容,C 的所有优点(和缺点),以及 Python 中的任何代码的 Python 的所有便利(和缺点)。

这不能满足您的“沙盒”需求,但您应该意识到无论如何您都不能特别好地对 Python 进行沙盒处理;它需要大量的努力和 CPython 的修改,如果你忘记了某处的一个小洞,你的 jail 就会被打破。如果你想对 Python 进行沙盒处理,你应该首先对整个过程进行沙盒处理,然后 C 扩展也可以进行沙盒处理。

关于java - 将算法 C 翻译成 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/132411/

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