将数据从 Python 应用程序传递到正在运行的 C++ 应用程序

pass data from a python application to a running c++ application

本文关键字:应用程序 运行 C++ 数据 Python      更新时间:2023-10-16

我用python编码到应用程序,另一个用c ++编码。在 python 应用程序的中间,我需要运行 c++ 应用程序,将一些输入传递给它并接收输出。我已经知道我可以使用子进程从 python 调用 c++ 应用程序,但由于每次调用该 c++ 应用程序时都必须进行一些初始计算,这使我的程序非常慢。所以我正在寻找的是这个:

将我的 C++ 应用程序置于无限 while 循环中并保持其运行。然后在我的 python 应用程序中,每当我需要调用 c++ 应用程序时,只需传递数据并获取输出即可。这样,我可以避免每次需要进行此调用时重复初始状态。

有没有办法这样做?就像编写另一个控制所有这些的应用程序一样。也可以有多个 python 应用程序运行实例,但我希望只运行其中一个 c++ 应用程序,因为它需要大量内存

使用子进程。Popen 你可以打开一个进程并保持打开状态,使用 stdin 和 stdout 与它通信。打开进程使用时:stdout=子进程。管道,标准=子进程。管。
然后,您可以写入 process.stdin 并从 process.stdout 读取 c++ 程序的输出。

你可以用boost python来做到这一点。设计一个在其构造函数中执行初始计算的类,以及一个执行计算的方法。你包装它并从python实例化它一次。

正如ASAFPR回答的那样,子流程解决方案也是可能的。

您还可以在C++应用程序中设置XML-RPC服务器,并使用xmlrclib模块从Python调用它。