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

问题描述 投票:2回答:1

我知道

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

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

python restart pi
1个回答
0
投票

您可以通过以下方式完成:

主进程-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)

希望它有所帮助,随时问问题。

© www.soinside.com 2019 - 2024. All rights reserved.