12

2 つの Python アプリケーションがあります。それらの間 (2 つのプロセス間) でコマンドとデータを送信する必要があります。それを行う最善の方法は何ですか?

1 つのプログラムは、別の GUI アプリケーションからコマンドとパラメーターを受け取るデーモンです。

仕事をしながら、GUIからコマンドを監視するデーモンを作成するにはどうすればよいですか? 私は解決策がクロスプラットフォームであることを好みます。

ps私はpyqt4とpythonを使用しています。

4

3 に答える 3

10

データ交換には次の方法を使用できます。

  1. Socket Programming : Qt では、QtNetwork モジュールにアクセスできます。例については、qt アシスタントを参照してください

  2. IPC : QSharedMemory クラスに実装された共有メモリを使用します。

  3. このアプリケーションが unix OS でのみ実行される場合は、データ交換のために Posix ベースのメッセージ キューなどを試すことができます。

  4. DBUS : Python と Qt の両方に DBus ベースのサポートがあることがわかります。Python の場合、関連するモジュールを見つける必要があります。

  5. マルチプロセッシングモジュールの使用

  6. Posix/SystemV ベースの IPC メカニズム (パイプ、キューなど) を使用します。

于 2010-10-13T09:09:02.473 に答える
2

通信方法とは関係ありませんが、pickle/cPickle モジュール (オブジェクトを文字列ストリームにエンコードしたり、その逆を行ったりすることができます) をチェックすることをお勧めします。非常に便利。

于 2010-10-13T11:04:40.577 に答える
0

例。

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 リダイレクトを台無しにする方法が原因で、これは悪い動作を示す可能性があります。

于 2010-10-13T11:26:39.990 に答える