Python 子进程不会继续在后台运行



我想在后台使用子进程运行一个 shell 脚本。但是,我不想等待它完成。我希望它在后台运行并在完成后终止。为简单起见,我使用 sleep 命令作为我的脚本。但是一旦我跑步,它就会终止。如果我放置通信或等待方法,那么它会继续运行,但这不是我想要的。

def run():
    subprocess.Popen(["sleep", "25s"])

你有没有看过运行程序时会发生什么?即使程序看起来结束了,线程也会继续执行以完成。在您当前的例子中,这很难看到,但看看像

import threading
def wait_print():
    time.sleep(5)
    print('delayed')
t = threading.Thread(target=wait_print)
t.start()

如果您将此程序存储为例如 delayed_print.py和从命令行python delayed_print.py运行,您将看到程序结束并且控件返回到 shell,但几秒钟后,文本delayes突然出现在 shell 窗口中。

最新更新