title: Efficient Python IPC
body: <p>I'm making an application in Python3, which will be divided in <code>batch</code> and <code>gui</code> parts. 
  <code>Batch</code> is responsible for processing logic and <code>gui</code> is responsible for displaying it.</p>
  
  <p>Which <a href="http://en.wikipedia.org/wiki/Inter-process_communication" rel="noreferrer">inter-process communication (IPC)</a> framework should I use with the following requirements:</p>
  
  <ol>
  <li>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).</li>
  <li>The batch (Python3 IPc library) should work with no problem on Linux, Mac, Windows, ...</li>
  <li>The IPC should support GUI written in different languages (Python, Javascript, ...)</li>
  <li>The performance of IPC is important - it should be as "interactive" as possible, but without losing information.</li>
  <li>Several GUI could be connected to the same batch.</li>
  </ol>
  
  <p><strong>additional:</strong> Will the choice be other if the GUI will be guaranteed to be written in Python also?</p>
  
  <p><strong>Edit:</strong>
  I have found a lot of IPC libraries, like here: <a href="https://stackoverflow.com/questions/7839786/efficient-python-to-python-ipc">Efficient Python to Python IPC</a> or <a href="https://stackoverflow.com/questions/731233/activemq-or-rabbitmq-or-zeromq-or">ActiveMQ or RabbitMQ or ZeroMQ or</a>. </p>
  
  <p>The best looking options I have found so far are:</p>
  
  <ul>
  <li>rabbitmq</li>
  <li>zeromq</li>
  <li>pyro</li>
  </ul>
  
  <p>Are they appropriate slutions to this problem? If not why? And if something is better, please tell me why also.</p>