如何从 python 主脚本重新启动 运行 python 脚本?

How to restart a running python script from a main python script?

我知道

os.execl(sys.executable, sys.executable, *sys.argv)

重新启动当前 运行 python 脚本。但是如何从主 运行 python 脚本重新启动另一个 运行 python 脚本?

您可以通过以下方式进行:

主进程 - main.py:

import time
import subprocess as sp


def restart_subprocess(sub_process, commands):
    sub_process.kill()  # kill old one process
    time.sleep(1)
    print("Restarted")
    return sp.Popen(commands)  # start a new one, hereby restart it


if __name__ == "__main__":
    while True:
        x = sp.Popen(["python", "sub.py"],)  # start subprocess
        time.sleep(2)  # show that it works
        y = restart_subprocess(x, ["python", "sub.py"])  # restart it, actually make a new one
        if y.wait(10) == 100:  # wait at least 10 seconds ore receive exit code from child process and check it
            print("Finish!")
            break

请注意,如果您使用的是 Linux,则需要指定 python 版本 ["python3", "sub.py"]

子进程 - sub.py:

import time
import sys

if __name__ == "__main__":
    for i in range(5):
        print(i)
        time.sleep(1)
    sys.exit(100)

希望对您有所帮助,欢迎提问。