我有两个Python应用程序。我需要在这两个应用程序之间(即两个进程之间)发送命令和数据。
其中一个程序是守护进程,应该接受来自另一个GUI应用程序的命令和参数。
如何让守护进程在执行其工作的同时监视来自GUI的命令? 我更喜欢跨平台的解决方案。
p.s. 我使用pyqt4和python。
我有两个Python应用程序。我需要在这两个应用程序之间(即两个进程之间)发送命令和数据。
其中一个程序是守护进程,应该接受来自另一个GUI应用程序的命令和参数。
如何让守护进程在执行其工作的同时监视来自GUI的命令? 我更喜欢跨平台的解决方案。
p.s. 我使用pyqt4和python。
Socket编程:在Qt中,您可以访问QtNetwork模块。请参见qt助手以获取示例。
IPC(进程间通信):使用QSharedMemory类实现的共享内存。
如果应用程序仅在Unix操作系统上运行,则可以尝试基于Posix的消息队列等进行数据交换。
DBus:您会发现python和Qt都支持基于DBus的通信。对于Python,您需要找到相关模块。
使用多进程模块
使用基于Posix/SystemV的IPC机制,例如管道、队列等。
sys.stdin
是否有用,因为很少有一个进程会启动另一个进程。 - David Webb虽然它与通信方式无关,但我建议检查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