繁体   English   中英

Python和C++之间最基本的IPC

[英]The most basic IPC between Python and C++

我正在用 C++ 编写一个 DLL(Windows,MS VS 17),它需要在某个时候调用一个 Python 脚本——它应该读取一个 json 编码的字符串,处理它并返回 json 编码的结果。 不需要异步模式或“光速”,但我需要或多或少的快速响应 - 即最多在 1-5 秒内。 以下是我考虑的方法和评论:

  1. 将字符串作为命令行参数传递 显然,这不是最佳选择——更不用说字符串长度限制了。
  2. 使用临时文件 在我的情况下,最好避免这种做法,因为虽然我通常每次启动都需要运行 Python 部分一次,但启动次数可能相当大。
  3. 使用 TCP/IP 套接字(用于localhost )/管道 对于这样的任务来说,两者似乎都有些矫枉过正——我没有不断变化的连续数据流。 此外,在 Windows 中这可能会很痛苦。
  4. 使用共享内存 共享内存将是一个不错的选择,但我找不到在 C++ 和 Python 中使用相同段的方法。
  5. 将 Python 部分嵌入到 C++ 中 我在这里有两个问题:a) Python env 应该安装在目标机器上,不是吗? b) python 脚本有一个import ,它导入一个包,从 pip 安装,不幸的是,我无法避免它。 嵌入时是否有正确的方法来处理导入?

在我的情况下,是否有一种简单的方法可以在 C++ 和 Python 之间进行互操作?

由于您的目标是 Windows,因此选项 (2) 是最好的,但请使用临时文件CreateFile(...FILE_ATTRIBUTE_TEMPORARY) 这实际上是共享内存(在操作系统级别,两者都由虚拟内存管理器管理),但您可以获得文件语义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM