【发布时间】:2016-03-22 19:01:45
【问题描述】:
所以我对 IPC 比较陌生,我有一个收集数据的 c 程序和一个分析数据的 python 程序。我希望能够:
- 将 python 程序作为我的主 c 程序的子进程调用
- 将包含要处理的数据的c结构传递给python进程
- 从python进程返回一个int值给c程序
我一直在简单地查看管道和 FIFO,但到目前为止找不到任何信息来解决此类问题,因为据我了解,例如 fork() 只会复制调用过程,所以不是我想要,因为我试图调用不同的进程。
【问题讨论】:
-
目前还不清楚(至少对我而言)您具体想要做什么。我认为您发布的代码不相关(或者是)?您是否想从 Python 中调用一些 C 代码,将 C 结构中显示的数据来回传递?
-
谢谢你,Brian,我已经编辑了这个问题,让它更加专注
-
如果可能,我会将数据序列化为字符串并将其作为参数传递给 c 程序,并将退出代码作为返回值。如果传递的数据量或返回值可能太大,这当然是不可能的。
-
我在非常相似的情况下使用的方法是使用共享内存(使用 mmap)。要传递给 python 脚本的数据被放入共享内存中,然后调用 python 进程,然后它进行处理并将结果放回共享内存中。我写了一个library,以便在 python 方面更轻松地处理 mmap 支持的数据。如果事情比这更复杂,也许可以使用基于消息队列的方法。