如何在pygtk中将数据从一个python脚本文件发送到另一个

时间:2013-09-23 11:21:51

标签: python python-2.7

我想在pygtk中将数据从一个py文件(stuff.py)发送到另一个py文件(start.py)意味着我想将数据从一个窗口发送到另一个窗口,我将在第一个窗口中选择。所以任何人都让我知道如何将数据从一个文件发送到另一个文件。

我正在使用subprocess

subprocess.call('start.py', shell=True)

1 个答案:

答案 0 :(得分:1)

首先,你真的应该谈论从一个PROCESS向另一个PROCESS发送数据 - 在文件之间发送数据没有多大意义(除非你在讨论从file1获取内容并将其复制粘贴到file2) ,但这显然不是这个问题。)

这称为IPC(进程间通信)。有多种方法可以做到这一点;列出几个选项:

  • 一个进程写入文件,另一个进程从该文件读取
  • 一个进程写入命名管道,另一个进程从该命名管道读取(实际上几乎可与第一个选项互换)
  • 一个进程通过另一个进程侦听的端口上的TCP /套接字连接到另一个进程,然后它们开始在一段时间内交换TCP数据包
  • 进程共享计算机RAM的一部分,以便它们可以从同一个地方进行写入和读取(这可以有非常好的性能,但我担心由于复制而在Python上并不是那么简单写,这很容易被触发,AFAIK)
  • 您使用更高级别的IPC机制,例如ZeroMQ,它也适用于更广泛的网络;这些负担处理所有低级技术和协议细节的负担,所以如果你需要在常规基础和非平凡的任务中处理IPC,我强烈建议你研究ZeroMQ或类似的东西;如果您有这个选择,请参阅http://zeromq.orghttp://zeromq.github.io/pyzmq/了解如何入门的更多信息。

有关详细信息,请参阅https://en.wikipedia.org/wiki/Inter-process_communication

至于你关于subprocess.call(...)的问题 - 不,这只会调用另一个文件创建一个全新的过程;这不会影响任何现有流程,无论它们是否来自start.py。另外,据我所知,您的应用程序是否使用pygtk,或多或少与IPC如何进行无关。