2013-09-23 81 views
1

我想從一個py文件(stuff.py)發送數據到pygtk中的另一個py文件(start.py)意味着我想從一個窗口發送數據到另一個窗口我會在第一場進行選擇。所以有人讓我知道如何將數據從一個文件發送到另一個文件。我正在使用subprocess如何將數據從一個python腳本文件發送到另一個pygtk

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

回答

1

首先,你真的應該談論從一個進程發送數據文件之間的另一個進程,發送數據沒有多大意義(除非你在談論從file1和禁止複製服用內容將它粘貼到file2中,但這顯然不是這樣的)。

這被稱爲IPC(進程間通信)。如何做到這一點有多種方式;列出幾個選項:

  • 一個進程寫入到文件,另一個從文件中讀取
  • 一個進程寫入到一個命名管道和其他從命名管道讀取(真的幾乎與第一款可更換選項)
  • 一個進程通過TCP /插座其中其它進程監聽端口上連接到其他,然後它們開始在一段時間交換的TCP數據包
  • 的進程共享的計算機的RAM的一部分,這樣他們可以在同一個地方寫字和閱讀(這可以有很好的表現,但是恐怕Pyt並不那麼簡單由於寫入時複製,因此易於觸發,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的問題或多或少無關。

相關問題