是否有可能/如何获取从 运行 pythran 在 python 上生成的 c++ 代码
Is it possible to / How to get the c++ code generated from running pythran on python
Pythran is a Python-to-C++ compiler for a subset of Python that
includes partial numpy support. It acts a little like Numba and
Cython—you annotate a function’s arguments, and then it takes over
with further type annotation and code specialization. It takes
advantage of vectorization possibilities and of OpenMP-based
parallelization possibilities.
在一些示例中,我展示了如何从 python 内部使用它来优化它,但我想知道是否可以使用它来将 python 代码转换为 C++...
可以吗?
如果我想使用的功能依赖于另一个功能怎么办?
如果其他功能是从单独的模块导入的怎么办?
有这样一个过程的例子/教程吗?
Jean Laroche 的博客 post 实现了您想要做的事情:https://serge-sans-paille.github.io/pythran-stories/pythran-as-a-bridge-between-fast-prototyping-and-code-deployment.html
如果您可以获得使用 Pythran 装饰器编译的代码(并不总是那么容易),那么获取 C++ 代码就非常简单:
pythran -e my-module.py
下面的文章 link 不知何故作者说了一些关于不必装饰任何东西的事情。这里不确定。
但是是的,它会给你大量模板化的 C++ 代码,可能有一个 NumPy DLL 依赖,也可能有一个 Python DLL(显然当不制作 Python 模块时,你可以跳过这个).也许是 link 的 OpenBLAS 或 MKL 库,也许是 OpenMP 库。当然,如果您正确编码,您可以以某种方式避免所有这些 DLL,尽管您不会获得巨大的加速。祝你阅读顺利,它不是很清晰。但是,嘿,这是一个依赖于大量 Pythran 模板的 .cpp 文件...
我不会使用 Pythran 生成您在其他项目中使用的 C++ 代码;它的主要目的是制作快速 Python 模块。但我想因为生成 .cpp 文件很容易,所以你可以。但是 auto-generated 代码总是有点难以理解,因为你会得到 typedef 变量,比如 type __type0 到 type __type200 或类似的东西,一个声明可能引用其中的 5 个变量。这并不是贬低 Pythran 的美观和功能;这是一个很棒的项目。
Pythran is a Python-to-C++ compiler for a subset of Python that includes partial numpy support. It acts a little like Numba and Cython—you annotate a function’s arguments, and then it takes over with further type annotation and code specialization. It takes advantage of vectorization possibilities and of OpenMP-based parallelization possibilities.
在一些示例中,我展示了如何从 python 内部使用它来优化它,但我想知道是否可以使用它来将 python 代码转换为 C++...
可以吗? 如果我想使用的功能依赖于另一个功能怎么办? 如果其他功能是从单独的模块导入的怎么办? 有这样一个过程的例子/教程吗?
Jean Laroche 的博客 post 实现了您想要做的事情:https://serge-sans-paille.github.io/pythran-stories/pythran-as-a-bridge-between-fast-prototyping-and-code-deployment.html
如果您可以获得使用 Pythran 装饰器编译的代码(并不总是那么容易),那么获取 C++ 代码就非常简单:
pythran -e my-module.py
下面的文章 link 不知何故作者说了一些关于不必装饰任何东西的事情。这里不确定。
但是是的,它会给你大量模板化的 C++ 代码,可能有一个 NumPy DLL 依赖,也可能有一个 Python DLL(显然当不制作 Python 模块时,你可以跳过这个).也许是 link 的 OpenBLAS 或 MKL 库,也许是 OpenMP 库。当然,如果您正确编码,您可以以某种方式避免所有这些 DLL,尽管您不会获得巨大的加速。祝你阅读顺利,它不是很清晰。但是,嘿,这是一个依赖于大量 Pythran 模板的 .cpp 文件...
我不会使用 Pythran 生成您在其他项目中使用的 C++ 代码;它的主要目的是制作快速 Python 模块。但我想因为生成 .cpp 文件很容易,所以你可以。但是 auto-generated 代码总是有点难以理解,因为你会得到 typedef 变量,比如 type __type0 到 type __type200 或类似的东西,一个声明可能引用其中的 5 个变量。这并不是贬低 Pythran 的美观和功能;这是一个很棒的项目。