PocketSam
PocketSam

Reputation: 368

How to interchange data between two python applications?

I have two python applications. I need to send commands and data between them (between two processes). What is the best way to do that?

One program is a daemon who should accept commands and parameters from another GUI application.

How can I make daemon to monitor comands from GUI, while making it's job? I prefer solution would be crossplatform.

p.s. I use pyqt4 and python.

Upvotes: 12

Views: 6709

Answers (3)

Ankur Gupta
Ankur Gupta

Reputation: 2300

You can use the following methods for data interchange:

  1. Socket Programming : In Qt you can access QtNetwork module. See qt assistant for examples

  2. IPC : Use shared Memory implemented in QSharedMemory class.

  3. If this application will run on unix os only, then you can try Posix based message queue etc. for data interchange

  4. DBUS : You will find both python and Qt have DBus based support. In Case of python you need to find the relevant module.

  5. Using Multi Processing module

  6. Using Posix/SystemV based IPC mechanism aka pipes, queue, etc.

Upvotes: 11

S.Lott
S.Lott

Reputation: 391962

Example.

Program_1.py

import pickle
import sys
for i in range(100):
    pickle.dump(i,sys.stdout)

Program_2.py

from __future__ import print_function
import pickle
import sys
while True:
    obj= pickle.load(sys.stdin)
    print( obj )

Usage:

Program_1.py | Program_2.py 

Under Windows, this may exhibit bad behavior because of the way Windows botches up simple file IO redirects.

Upvotes: 0

riviera
riviera

Reputation: 421

While it's not related to the way of the communication, I recommend checking out the pickle/cPickle module (which can encode objects into string streams and vice versa). Very useful.

Upvotes: 2

Related Questions