Python程序正在进行前端工作,C程序正在进行后端工作。 每个都是一个单独的过程。
Python进程充当主进程,它将信号和事件发送到C进程。
C进程生成统计信息,计数器和信息,然后发送回python进程,并将其显示给用户。
它们之间将进行双工通信
在寻找不同的技术后,我发现这些是我可以做到的一些方法:
1. Create a UDP/TCP socket between the 2 processes.
2. Use a memory mapped file.
传递的数据格式应该是什么?
1. Should I use variable size structures?
2. Should I use Tag Length Value Format?
3. Should I use XML?
我可以拥有一个过程理解的公共文件吗?
例如,一个公共头文件,其中包含要传递的数据的格式。
不同类型的数据消息
1. Signal messages from python to c.
2. Signal messages from c to python.
3. Heartbeat messages from python to c.
4. Stats messages from c to python.
5. Log messages from c to python.
6. Progress messages from c to python.
7. Update messages from python to c
就C而言,每条消息都是C结构。
答案 0 :(得分:3)
不允许评论,所以:为什么是一个简单的管道还不够吗?
答案 1 :(得分:2)
最简单:文本文件。
第二个最简单的:json文件。
更有趣,最灵活:将您的C程序包装在Python运行器中,使用ctypes在此过程中进行通信。
答案 2 :(得分:1)
我会考虑使用nanomsg。 http://nanomsg.org/这是一个简单易用的独立IPC库,也有很好的python绑定。
或者,如果您愿意,可以使用它较旧的,但也可以使用真棒ZeroMQ。
最后但同样重要的是,虽然多进程方法是一件好事(tm),但可以考虑使用ctypes并围绕它构建一个python包装器。这种方法的优点是你可以利用python的强大功能,同时不会失去性能。例如。你可以用几行python代码进行多处理。