2013-08-20 24 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