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 parame开发者_如何学Pythonters 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.
You can use the following methods for data interchange:
Socket Programming : In Qt you can access QtNetwork module. See qt assistant for examples
IPC : Use shared Memory implemented in QSharedMemory class.
If this application will run on unix os only, then you can try Posix based message queue etc. for data interchange
DBUS : You will find both python and Qt have DBus based support. In Case of python you need to find the relevant module.
Using Multi Processing module
Using Posix/SystemV based IPC mechanism aka pipes, queue, etc.
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.
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.
精彩评论