1

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

我正在使用subprocess.

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

1 回答 1

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 的问题无关。

于 2013-09-23T11:27:23.507 回答