是否有可能/如何获取在 python 上运行 pythran 生成的 c++ 代码

Pythran 是 Python 到 C++ 的编译器,适用于包含部分 numpy 支持的 Python 子集。它的行为有点像 Numba 和 Cython——你注释一个函数的参数,然后它接管进一步的类型注释和代码专业化。它利用了向量化的可能性和基于 OpenMP 的并行化的可能性。

在一些示例中,我展示了如何从 python 内部使用它来优化它,但我想知道是否可以使用它来将 python 代码转换为 c++ ......

它可以这样做吗?如果我要使用的功能依赖于另一个功能怎么办?如果其他功能是从单独的模块中导入的呢?是否有此类过程的示例/教程?


缥缈止盈
浏览 217回答 2
2回答

手掌心

如果您可以使用 Pythran 装饰器编译代码(并不总是那么容易),那么获取 C++ 代码非常简单:pythran -e my-module.py下面链接的文章不知何故作者说了一些关于不必装饰任何东西的事情。这里不确定。但是是的,它会为您提供大量模板化的 C++ 代码,可能带有 NumPy DLL 依赖项,也可能是 Python DLL(显然当不制作 Python 模块时,您可以跳过此部分)。可能是要链接的 OpenBLAS 或 MKL 库,也可能是 OpenMP 库。当然,如果您正确编码,您可以以某种方式避免所有这些 DLL,尽管您不会获得巨大的加速。祝你阅读顺利,它不是很清晰。但是,嘿,它是一个依赖于大量 Pythran 模板的 .cpp 文件......我不会使用 Pythran 来生成您在其他项目中使用的 C++ 代码;它的主要目的是制作快速的 Python 模块。但我想因为生成 .cpp 文件很容易。但是自动生成的代码总是有点难以理解,因为你会得到 typedef 变量,比如 type __type0 到 type __type200 或类似的东西,一个声明可能会引用其中的 5 个变量。这并不是要贬低 Pythran 的美感和功能。这是一个很棒的项目。

慕尼黑的夜晚无繁华

Jean Laroche 的博客文章实现了您想要做的事情:https ://serge-sans-paille.github.io/pythran-stories/pythran-as-a-bridge-between-fast-prototyping-and-code -deployment.html
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python