我想在后台使用子进程运行一个 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 窗口中。