C++如何调用Python代码

C++和Python进行交互一般有两种情况:

C++代码中内嵌入Python:当C++项目中有部分功能需要经常发生变更时,以此来达到功能需求的灵活性,那么将这部分功能通过Python实现,再通过C++调用即可。这种一般会在原型开发、插件系统、热更新等场景使用。

C++扩展Python:当Python项目中遇到性能瓶颈时,常规做法是将性能瓶颈部分进行剥离,使用C++封装成Python可调用的模块,比如so库。

这里推荐使用pybind11库,一个C++轻量级库,专用于C++和Python之间进行互操作,该库的设计理念是让开发者能够在C++和Python之间轻松的进行交互,无需对底层Python的 C API进行深入了解。

接下来着重讲解一下如何在C++中调用Python:

方法一:使用Python提供给C++的API

当前使用最多的方式是将Python代码编译成文本类型的动态链接库,C++代码中只需定义你调用Python代码的函数;

这种方式与在C++中直接启用一个Python解释器并无差异,通过Python解释器执行调用的Python代码,执行完成后释放资源,即可完成调用目的。

在pybind11中提供了初始化Python解释器的功能,需要对Python解释器的管理机制进行理解;当对程序进行启动时,首先对Python解释器进行初始化,程序执行完成后,需要清理Python解释器,确保所有Python对象都能够正确释放,避免造成资源未得到正确释放和内存泄漏等。

而C++与Python能够进行交互的核心是:数据转换。pybind11中提供了丰富的类型,能够自动转换大部分的数据类型,比如传递容器、基本类型、以及自定义类型等。

Python中提供的C++调用主要API

参数传递方式

方法二:调用Python脚本

不推荐使用这种方式,这种方法的缺陷是获取函数返回值不太便利,具体的做法可自行上网搜索教程,这里不在展开讲解。

如果直接调用Python脚本,那么C++调用Python代码的威力是发挥不出来的,这样的调用连单向都称不上,真正有用的是两者互相调用,Python的脚本可以调用C++的函数或类、接受来自C++的传参参数、又能够将返回值返回到C++,而C++又可以将函数暴露给Python,这样就实现了C++与Python的互相调用。

相关推荐
belldeep3 小时前
python:genesis-world, Genesis-Embodied-AI
人工智能·python·ai·genesis
布莱克6053 小时前
C/C++ 中变量的声明与定义:区别、联系与常见误区
c语言·开发语言·c++·声明·定义
LabVIEW开发3 小时前
LabVIEW 局部变量为何引发竞争条件?四种同步机制
开发语言·labview
benchmark_cc4 小时前
A 股、港股、美股如何建立统一的标的主数据格式?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
维克兜率天5 小时前
【维克】趋势型CTA:期货市场的“追涨杀跌“
人工智能·python
Zenova EdgeOS5 小时前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
取名真是5 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
梦想不只是梦与想6 小时前
PyTorch、CPU、GPU、CUDA
人工智能·pytorch·python·深度学习·机器学习·cuda
数字融合6 小时前
透明化视频孪生危化安全管控解决方案
人工智能·python·安全
FRing036 小时前
vue2干货总结3(computed计算属性、watch监听器)
开发语言·前端·vue.js·vue2