C++应用程序中使用Boost::Python嵌入Python:介绍

翻译: Leon Lee ([email protected]) 原文:在此

大约一年以前,我们MiserWare 决定通过Web连接增强Granola 的核心电源管理功能,允许用户从一个位置(the Granola Dash)跟踪所有机器的节省(很快,配置和应用策略和日程安排)

但问题是我们的代码库完全是用C++编写的。我检查了几个选项。最终,我决定用Python编写Web连接代码并将其嵌入到Granola中,这将为我提供最好的灵活性。我找到了boost::python并将其用作我实现的(良好)基础。

随着时间的推移,我在这种情况下提高了我对嵌入Python的理解和实现,并且我已经越来越多地解决了各种C++中难以解决而Python中容易解决的问题--配置解析、封装成JSON的复杂数据结构、自动更新,以及基本上任何不是核心算法(性能原因)或系统交互(兼容性)的内容。

这是我最初的要求:

  • 实例化Python对象并以自然的方式与它们交互
  • 将数据传递给Python函数
  • 从Python函数和对象中提取数据
  • 处理来自Python代码的错误

在代码开始变得更复杂之后,我意识到以下也是重要的主题:

  • 从多个(实际)执行线程调用Python代码
  • 将Python异常解析为可用的数据结构

这一系列的教程是我尝试记录我的经验并帮助其他想要在他们的C++应用程序中使用Python的人。在第1部分中,我将介绍嵌入Python和使用boost::python的基础知识,并概述一个简单的C++/Python应用程序。之后,我将介绍上述主题并提供一些代码来解决我最初遇到的许多问题。

猜你喜欢

转载自blog.csdn.net/cfy_focusoncdr/article/details/82831955