我有两个python应用程序。我需要在它们之间发送命令和数据(在两个进程之间)。 最好的方法是什么?
一个程序是一个守护程序,它应该接受来自另一个GUI应用程序的命令和参数。
如何使守护进程监控来自GUI的命令,同时使其成为工作? 我更喜欢解决方案是跨平台。
P.S。我使用pyqt4和python。
答案 0 :(得分:10)
您可以使用以下方法进行数据交换:
套接字编程:在Qt中,您可以访问QtNetwork模块。有关示例,请参阅qt助手
IPC:使用QSharedMemory类中实现的共享内存。
如果此应用程序仅在unix os上运行,那么您可以尝试基于Posix的消息队列等进行数据交换
DBUS:你会发现python和Qt都有基于DBus的支持。在python的情况下,你需要找到相关的模块。
使用多处理模块
使用基于Posix / SystemV的IPC机制,即管道,队列等
答案 1 :(得分:2)
虽然它与通信的方式无关,但我建议检查pickle / cPickle模块(可以将对象编码为字符串流,反之亦然)。非常有用。
答案 2 :(得分: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重定向的方式,这可能会表现出不良行为。