Вы можете сделать это следующим образом:
основной процесс - 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)
Надеюсь, что это помогло, не стесняйтесь задавать вопросы.