【问题标题】:How to update parameters using subprocess (python)如何使用子进程(python)更新参数
【发布时间】:2013-08-20 11:09:32
【问题描述】:


这里我有两个脚本:main.py 和 sub.py

  • sub.py 是一个基于 wxpython 的应用程序,它只显示一个文本(接收为 必填参数,例如:sub.py "Hello world!")。
  • 在 main.py 中,它使用 subprocess 调用 sub.py 并在 第一次打电话。

而我的问题是如何更新 main.py 中 sub.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>

这可能吗?那么如何设计这样的相互通信的程序呢?
谢谢!!!

【问题讨论】:

    标签: python parameters subprocess


    【解决方案1】:

    您无法更新用于启动程序的参数。但是,您可以使用其他形式的进程间通信来执行此操作。一种简单的方法是让“sub.py”从标准输入中读取其参数。每次读取新行时,都会显示新文本。

    【讨论】:

    • +1,我认为您需要类似select 这样的UI线程在等待标准输入时不会冻结。不过,它不适用于 Windows,请参阅 stackoverflow.com/questions/12499523/…
    • 感谢您的建议! “stdin/stdout”通过 subprocess.PIPE 是一个好方法!!
    • 您可以通过运行一个单独的线程来避免 UI 冻结,该线程读取标准输入并将数据放入 Queue,主线程可以随时从中提取信息。
    • 如果我没记错的话,wxPython 已经为 GUI 事件使用了一个单独的事件线程。但无论如何,使用队列模式是个好建议。
    猜你喜欢
    • 2014-09-19
    • 1970-01-01
    • 2012-07-25
    • 2021-07-25
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多