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的互相调用。

相关推荐
海参崴-10 分钟前
C++代码格式规范
java·前端·c++
怎么没有名字注册了啊15 分钟前
崩溃解决_Qt子窗口关闭按钮后打开崩溃
开发语言·qt
春蕾夏荷_72829772518 分钟前
vscode 创建第一个python程序
vscode·python
qq_2546744118 分钟前
pysnmp 最新版本
python
HuaCode21 分钟前
Openclaw一键安装部署(2026年4月最新)
git·python·nodejs·openclaw·api token
m0_7381207223 分钟前
网络安全编程——开发一个TCP代理Python实现(二)
python·tcp/ip·web安全
Dxy123931021623 分钟前
JavaScript 如何捕获异常:从基础到进阶的完整指南
开发语言·javascript·udp
!停37 分钟前
C++入门—初阶模板
开发语言·c++
so2F32hj238 分钟前
拆解 OpenHands(14)--- Microagents
java·开发语言
Jp7gnUWcI1 小时前
C++ 内存避坑指南:如何用移动语义和智能指针解决“深拷贝”与“内存泄漏”
开发语言·c++