Pythong与C++混合编程

2023-05-20  本文已影响0人  卡门001

概述

也要以用golang

与C++混合方式

  1. 将影响性能的核心代码用c++/go来写,而逻辑开发由py完成
  2. 方法一:使用ctypes库加载C++编写的动态链接库,并加载到py中使用

    ctypes 是 Python 的外部函数库。它提供了与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数。可使用该模块以纯 Python 形式对这些库进行封装(需要先将C++编写的代码转为动态链接库..dll)
    https://docs.python.org/zh-cn/3/library/ctypes.html

  3. 方法二:使用pybind将C++编译为Python库。

https://gitcode.net/mirrors/pybind/pybind11
原理:将C与Py一起转化为一种中间语言

  1. 方法三:使用Python将Py直接转为C++代码。

https://pypi.org/project/pythran

pythran

操作指南
  1. 安装
pip install pythran
pythran --help

pythran可以用py的import代码导入,也可以直接在命令行中执行

  1. 转换
pythran -e cli_foo.py 
            -p pythran.optimizations.ConstantFolding
            -o  cli_foo.hpp

# 编译(未验证)
`pythran-config --compiler --cflags` -std=C++11 cli_foo.cpp -o cli_foo
  1. 编写c++测试库
    vim cli_foo.hpp
include cli_foo.hpp
int main(){
   foo()();
   return 0;
}

pythran无法支持所有py的功能,只有矩证计算与数学的数据处理,支持较好。其他功能扩展,比如引入第三方库,则需要自己做一些额外的处理。

上一篇 下一篇

猜你喜欢

热点阅读