如何实现 CC++ 与 Python 的通信

Python015

如何实现 CC++ 与 Python 的通信,第1张

属于混合编程的问题。较全面的介绍一下,不仅限于题主提出的问题。

以下讨论中,Python指它的标准实现,即CPython(虽然不是很严格)

本文分4个部分

C/C++ 调用 Python (基础篇)— 仅讨论Python官方提供的实现方式

Python 调用 C/C++ (基础篇)— 仅讨论Python官方提供的实现方式

C/C++ 调用 Python (高级篇)— 使用 Cython

Python 调用 C/C++ (高级篇)— 使用 SWIG

练习本文中的例子,需要搭建Python扩展开发环境。具体细节见搭建Python扩展开发环境 - 蛇之魅惑 - 知乎专栏

1 C/C++ 调用 Python(基础篇)

Python 本身就是一个C库。你所看到的可执行体python只不过是个stub。真正的python实体在动态链接库里实现,在Windows平台上,这个文件位于 %SystemRoot%\System32\python27.dll。

这个可以称之为 两个软件(进程)之间的通信

进程间通信主要包括管道, 系统IPC(包括消息队列,信号量,共享存储), SOCKET.

比如: 你可以共同访问计算机上的一个 txt文件 

        也可以使用 socket 通信

        也可以使用数据库,

        等等 

        都能达到通信的目的

可以使用Python的ctypes模块来实现C和Python之间的通信,从而实现C调用Python训练模型的输入。

ctypes模块提供了一种调用共享库的方法,可以将Python的变量和函数转换为C语言的变量和函数,从而实现C调用Python的功能。

要实现C调用Python训练模型的输入,需要做的第一步是在C程序中定义一个Python函数,并将其转换为C函数。然后,可以使用ctypes模块将Python函数转换为C函数,从而实现C调用Python训练模型的输入。