首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在两个python应用程序之间交换数据?

如何在两个python应用程序之间交换数据?
EN

Stack Overflow用户
提问于 2010-10-13 17:02:30
回答 3查看 5.9K关注 0票数 12

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

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

如何使守护进程在执行任务时从GUI监视命令?我更喜欢跨平台的解决方案。

附注:我使用pyqt4和python。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-13 17:09:02

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

  1. 套接字编程:在Qt中可以访问QtNetwork模块。参见qt助手中的例子
  2. IPC:使用在QSharedMemory类中实现的共享内存。
  3. 如果这个应用程序只能在unix操作系统上运行,那么你可以尝试使用基于Posix的消息队列等来获取数据interchange
  4. DBUS :你会发现

和Qt都支持基于DBus的。如果是python,你需要找到相关的模块。

  1. 使用多处理模块
  2. 使用基于Posix/SystemV的IPC机制又称管道、队列等
票数 10
EN

Stack Overflow用户

发布于 2010-10-13 19:04:41

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

票数 2
EN

Stack Overflow用户

发布于 2010-10-13 19:26:40

举例说明。

Program_1.py

代码语言:javascript
复制
import pickle
import sys
for i in range(100):
    pickle.dump(i,sys.stdout)

Program_2.py

代码语言:javascript
复制
from __future__ import print_function
import pickle
import sys
while True:
    obj= pickle.load(sys.stdin)
    print( obj )

用法:

代码语言:javascript
复制
Program_1.py | Program_2.py 

在Windows下,这可能会表现出糟糕的行为,因为Windows会搞砸简单的文件IO重定向。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3922135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档