2013-08-20 55 views
0


這裏參數我有兩個腳本:main.py和sub.py
如何更新使用子(蟒蛇)

  • sub.py是一個基於wxPython的應用程序,它只是顯示一個文本(收到一個 必需參數,例如:sub.py「Hello world!」)。
  • 在main.py中,它使用子進程調用sub.py並在第一次調用時發送參數 。

而我的問題是如何更新sub.py的相應參數main.py這將重新發送一個新的參數,而重新啓動(或調用)sub.py?
喜歡的東西,這些在main.py:

subprocess.Popen('sub.py "Hello, world"') 
subprocess.update('sub.py "Hi, world!"')#(just update the parameter without reopen sub.py)<br> 

這可能嗎?那麼如何設計相互溝通的程序呢?
謝謝!

回答

2

您無法更新用於啓動程序的參數。但是,您可以使用其他形式的進程間通信來執行此操作。一個簡單的方法是讓「sub.py」從標準輸入讀取其參數。每次它讀取新行時,它都會顯示新文本。

+0

+1,我想你需要像'select'這樣的東西,以便在等待標準輸入時UI線程不會凍結。它不會輕易在Windows上工作,請參閱http://stackoverflow.com/questions/12499523/using-sys-stdin-in-select-select-on-windows?lq=1 – Kos

+0

謝謝您的建議! 「stdin/stdout」通過子進程.PIPE是一個好方法! –

+1

你可以通過運行一個單獨的線程讀取stdin並將數據放入一個'Queue'中,以避免UI凍結,主線程可以隨時從中獲取信息。 – martineau