【发布时间】: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完成