12

我有两个 python 应用程序。我需要在它们之间(两个进程之间)发送命令和数据。最好的方法是什么?

一个程序是一个守护程序,它应该接受来自另一个 GUI 应用程序的命令和参数。

如何让守护进程监控来自 GUI 的命令,同时让它发挥作用?我更喜欢跨平台的解决方案。

ps我使用pyqt4和python。

4

3 回答 3

10

您可以使用以下方法进行数据交换:

  1. 套接字编程:在 Qt 中,您可以访问 QtNetwork 模块。示例见 qt 助手

  2. IPC:使用在 QSharedMemory 类中实现的共享内存。

  3. 如果此应用程序仅在 unix 操作系统上运行,那么您可以尝试基于 Posix 的消息队列等进行数据交换

  4. DBUS:你会发现 python 和 Qt 都有基于 DBus 的支持。在 python 的情况下,您需要找到相关的模块。

  5. 使用多处理模块

  6. 使用基于 Posix/SystemV 的 IPC 机制,也就是管道、队列等。

于 2010-10-13T09:09:02.473 回答
2

虽然它与通信方式无关,但我建议查看 pickle/cPickle 模块(它可以将对象编码为字符串流,反之亦然)。很有用。

于 2010-10-13T11:04:40.577 回答
0

例子。

程序_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 重定向。

于 2010-10-13T11:26:39.990 回答