Как обмениваться данными между двумя приложениями python?
У меня есть два приложения python. Я должен посылать команды и данные между ними (между двумя процессами). Как лучше всего это сделать?
одна программа-это демон, который должен принимать команды и параметры из другого приложения GUI.
Как я могу сделать daemon для мониторинга команд из GUI, делая его работу? Я предпочитаю, чтобы решение было кроссплатформенным.
p.s. Я использую pyqt4 и python.
3 ответов
для обмена данными можно использовать следующие методы:
разъем программирования : в Qt можно открыть модулем qtnetwork. См. Qt assistant для примеров
IPC: используйте общую память, реализованную в классе QSharedMemory.
Если это приложение будет работать только на ОС UNIX, то вы можете попробовать в POSIX на основе очереди сообщений и т. д. для обмена данными
DBUS : вы найдете как python, так и Qt имеет поддержку на основе DBus. В случае python вам нужно найти соответствующий модуль.
используя Multi модуль обработки
использование механизма 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 перенаправляет.