首先创建一个 test.py
文件
import time a = 0 while True: a += 1 print(a) time.sleep(1)
然后创建 script_detection.py
文件检测 test.py
脚本运行状态,如果中断,则重启 test.py
#!/usr/bin/python # -*- coding:utf-8 -*- import subprocess,time,sys TIME = 3 #程序状态检测间隔(单位:秒) CMD = "test.py" #需要执行程序的路径,支持jar,或绝对路径 如:r"D:\\calc.exe" 或者r"D:\\test.jar" class Auto_Run(): def __init__(self,sleep_time,cmd): self.sleep_time = sleep_time self.cmd = cmd self.ext = (cmd[-3:]).lower() #判断文件的后缀名,全部换成小写 self.p = None #self.p为subprocess.Popen()的返回值,初始化为None self.run() #启动时先执行一次程序 try: while 1: time.sleep(sleep_time) #休息 sleep_time 秒,再判断程序状态 self.poll = self.p.poll() #判断程序进程是否存在,None:表示程序正在运行 其他值:表示程序已退出 if self.poll is None: print("运行正常") else: print("未检测到程序运行状态,准备启动程序") self.run() except KeyboardInterrupt as e: print("检测到CTRL+C,准备退出程序!") # self.p.kill() #检测到CTRL+C时,kill掉CMD中启动的exe或者jar程序 def run(self): if self.ext == ".py": print('start OK!') self.p = subprocess.Popen(['python','%s' % self.cmd], stdin = sys.stdin,stdout = sys.stdout, stderr = sys.stderr, shell = False) else: pass app = Auto_Run(TIME,CMD)
运行结果如下:
start OK! 1 2 3 运行正常 4 5 6 运行正常 7 8 9 运行正常
0 条评论