我有两个 python 应用程序。我需要在它们之间(两个进程之间)发送命令和数据。最好的方法是什么?
一个程序是一个守护程序,它应该接受来自另一个 GUI 应用程序的命令和参数。
如何让守护进程监控来自 GUI 的命令,同时让它发挥作用?我更喜欢跨平台的解决方案。
ps我使用pyqt4和python。
您可以使用以下方法进行数据交换:
套接字编程:在 Qt 中,您可以访问 QtNetwork 模块。示例见 qt 助手
IPC:使用在 QSharedMemory 类中实现的共享内存。
如果此应用程序仅在 unix 操作系统上运行,那么您可以尝试基于 Posix 的消息队列等进行数据交换
DBUS:你会发现 python 和 Qt 都有基于 DBus 的支持。在 python 的情况下,您需要找到相关的模块。
使用多处理模块
使用基于 Posix/SystemV 的 IPC 机制,也就是管道、队列等。
虽然它与通信方式无关,但我建议查看 pickle/cPickle 模块(它可以将对象编码为字符串流,反之亦然)。很有用。
例子。
程序_1.py
import pickle
import sys
for i in range(100):
pickle.dump(i,sys.stdout)
程序_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 重定向。