【问题标题】:Python to call another python without waiting for it to complete using os or subprocess [duplicate]Python调用另一个python而不等待它使用os或子进程完成[重复]
【发布时间】:2016-03-22 14:37:39
【问题描述】:

我有一个 python 脚本。它永远作为带有while循环的服务运行。该脚本需要由另一个 python 执行,但无需等待它应该通过的输出。

所以带有while循环的主脚本如下“main.py”。这永远不会结束。

while True:
    # do some task
    time.sleep(5)

这需要由另一个类似功能的python“start.py”执行,如下所示。

os.system("main.py 1")

subprocess.Popen("python main.py")

这里的问题“start.py”不会因为“main.py”的输出而结束。但我想让它像“start.py”需要加载“main.py”并将其留在后台。然后“start.py”需要完成该过程。如何修改

os.system("main.py 1")

函数跳过等待“main.py”?请考虑这需要在跨平台上运行。

【问题讨论】:

  • 为什么不使用subprocess.Popen? os.system 会等待进程返回,Popen 不会,你也可以使用& 来后台进程
  • subprocess.Popen 很好。但它仍然保持控制台执行下一个脚本。
  • 使用 & 来做背景不只是一个 shell 功能吗?这不适用于 Windows。
  • @sugunan, subprocess.Popen("python main.py") 不会运行,它也不会等待main.py 完成

标签: python python-os


【解决方案1】:

我建议您查看 Plumbum https://plumbum.readthedocs.org/en/latest/ 特别是背景/前景部分https://plumbum.readthedocs.org/en/latest/#foreground-and-background-execution

from plumbum import BG
from plumbum.cmd import python

python('main.py', '1') & BG

也可以跨平台。

【讨论】:

  • No Module named plumbum error come.
  • 你安装了吗?
猜你喜欢
  • 2016-03-07
  • 2013-07-07
  • 2010-10-07
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 2015-04-01
  • 2012-11-24
  • 1970-01-01
相关资源
最近更新 更多