我知道
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)
希望它有所帮助,随时问问题。