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

问题描述 投票:0回答:1

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

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

就我而言,有没有一种简单的方法可以在C ++和Python之间进行互操作?

c++ python-3.x windows ipc
1个回答
2
投票

由于您的目标是Windows,所以选项(2)最好,但是使用临时文件CreateFile(...FILE_ATTRIBUTE_TEMPORARY)。这是有效的共享内存(在操作系统级别,两者均由虚拟内存管理器管理),但是您可以获取文件语义。

© www.soinside.com 2019 - 2024. All rights reserved.