运行 在后台运行的单个调用中一个接一个的子进程

Run one subprocess after another in a single call that works in the background

为了运行一个子进程在后台不影响主代码的连续性我这样调用Python文件:

Popen(['secondary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)

有什么方法可以调用 运行 第一个文件 ('secondary.py') 然后 运行 另一个文件 ('tertiary.py') 当它完成进程?

例如:

Popen(['secondary.py','tertiary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)

注:

我不能这样称呼一个在另一个之下:

Popen(['secondary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
Popen(['tertiary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)

因为它们会成为两个独立的子流程,这不是我的预期目标,我需要完成一个然后运行另一个。

subprocess.run 等待命令完成。您可以创建一个后台线程来连续运行您想要的所有命令。

import threading
import subprocess

def run_background():
    subprocess.run(['secondary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)
    subprocess.run(['tertiary.py'], shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)

bg_thread = threading.Thread(target=run_background)
bg_thread.start()

因为这没有被标记为守护线程,主线程将在退出程序时等待直到该线程完成。