当前位置:  开发笔记 > 编程语言 > 正文

将算法C转换为Python

如何解决《将算法C转换为Python》经验,为你挑选了1个好方法。

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

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

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


注意:Python C扩展或ctypes 不是一个选项,因为环境是沙箱.

另一个注意事项:看起来有一个C-to-Java-bytecode编译器,他们甚至将libjpeg编译为Java.Java字节码+ VM与CPython字节码+ VM有太大不同吗?



1> Thomas Woute..:

坦率地说,没有办法机械地和有意义地将C翻译成Python而不会遭受疯狂的性能损失.我们都知道Python并不是接近C速度(使用当前的编译器和解释器),但更糟糕的是C擅长的东西(bit-fiddling,整数数学,内存块的技巧)Python非常慢,什么Python擅长你不能直接在C表达.因此,直接翻译将是非常低效的,甚至是荒谬的.

总的来说,更好的方法确实是将C保持为C,并将其包装在Python扩展模块中(使用SWIG,Pyrex,Cython或手动编写包装器)或使用ctypes直接调用C库.C的所有好处(和缺点)已经是C或者你以后添加的,以及Python中任何代码的Python的所有便利(和缺点).

这不会满足你的"沙盒"需求,但你应该意识到你无论如何都不能特别好地沙盒Python; CPython需要付出很多努力和修改,如果你在某个地方忘记了一个小洞,你的监狱就会被打破.如果你想沙箱Python,你应该首先沙盒化整个过程,然后C扩展也可以沙箱化.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有