Как обмениваться данными между двумя приложениями python?

У меня есть два приложения python. Я должен посылать команды и данные между ними (между двумя процессами). Как лучше всего это сделать?

одна программа-это демон, который должен принимать команды и параметры из другого приложения GUI.

Как я могу сделать daemon для мониторинга команд из GUI, делая его работу? Я предпочитаю, чтобы решение было кроссплатформенным.

p.s. Я использую pyqt4 и python.

3 ответов


для обмена данными можно использовать следующие методы:

  1. разъем программирования : в Qt можно открыть модулем qtnetwork. См. Qt assistant для примеров

  2. IPC: используйте общую память, реализованную в классе QSharedMemory.

  3. Если это приложение будет работать только на ОС UNIX, то вы можете попробовать в POSIX на основе очереди сообщений и т. д. для обмена данными

  4. DBUS : вы найдете как python, так и Qt имеет поддержку на основе DBus. В случае python вам нужно найти соответствующий модуль.

  5. используя Multi модуль обработки

  6. использование механизма IPC на основе Posix / SystemV aka, очереди и т. д.


а это не связано с путь связи, я рекомендую проверить модуль рассола / 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 перенаправляет.