I'm making an application in Python3, which will be divided in batch and gui parts.
Batch is responsible for processing logic and gui is responsible for displaying it.
Which inter-process communication (IPC) framework should I use with the following requirements:
- The GUI can be run on other device than batch (GUI can be run on the same device, on smartphone, tablet etc, locally or over network).
- The batch (Python3 IPc library) should work with no problem on Linux, Mac, Windows, ...
- The IPC should support GUI written in different languages (Python, Javascript, ...)
- The performance of IPC is important - it should be as "interactive" as possible, but without losing information.
- Several GUI could be connected to the same batch.
additional: Will the choice be other if the GUI will be guaranteed to be written in Python also?
Edit: I have found a lot of IPC libraries, like here: Efficient Python to Python IPC or ActiveMQ or RabbitMQ or ZeroMQ or.
The best looking options I have found so far are:
- rabbitmq
- zeromq
- pyro
Are they appropriate slutions to this problem? If not why? And if something is better, please tell me why also.
SocketServerand connect the GUI through sockets. In this way you are sure it works on every platform and even through the net.SocketServerwould be better choise than for examplezeromqorrabbitmq?_winapi.ReadFile()and_winapi.WriteFile()with_winapi.DuplicateHandle()from the child process on the parent handles passed to it as that works directly in RAM.