2 つの Python アプリケーションがあります。それらの間 (2 つのプロセス間) でコマンドとデータを送信する必要があります。それを行う最善の方法は何ですか?
1 つのプログラムは、別の GUI アプリケーションからコマンドとパラメーターを受け取るデーモンです。
仕事をしながら、GUIからコマンドを監視するデーモンを作成するにはどうすればよいですか? 私は解決策がクロスプラットフォームであることを好みます。
ps私はpyqt4とpythonを使用しています。
データ交換には次の方法を使用できます。
Socket Programming : Qt では、QtNetwork モジュールにアクセスできます。例については、qt アシスタントを参照してください
IPC : QSharedMemory クラスに実装された共有メモリを使用します。
このアプリケーションが unix OS でのみ実行される場合は、データ交換のために Posix ベースのメッセージ キューなどを試すことができます。
DBUS : Python と Qt の両方に DBus ベースのサポートがあることがわかります。Python の場合、関連するモジュールを見つける必要があります。
マルチプロセッシングモジュールの使用
Posix/SystemV ベースの IPC メカニズム (パイプ、キューなど) を使用します。
通信方法とは関係ありませんが、pickle/cPickle モジュール (オブジェクトを文字列ストリームにエンコードしたり、その逆を行ったりすることができます) をチェックすることをお勧めします。非常に便利。
例。
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 )
使用法:
Program_1.py | Program_2.py
Windows では、Windows が単純なファイル IO リダイレクトを台無しにする方法が原因で、これは悪い動作を示す可能性があります。