while True: proc = subprocess.Popen(["python3", "/home/pi/Documents/8-17/simplest.py"]) while proc.poll() is None: time.sleep(1) print("simplest运行中.....") chinanet = isNetChainOK() if chinanet is False: print("网络异常") getNet() if any(p.name() == 'simplest.py' for p in psutil.process_iter()): print("中断simplest.py") # 中断 simplest.py os.system("pkill -f simplest.py") if proc.returncode == 0: print("simplest运行正常.....") break 改进一下
时间: 2023-12-12 14:02:44 浏览: 261
matlab骨架提取源代码-cloudcontr:自动从code.google.com/p/skeletonization导出
可以将代码改进如下:
```
while True:
# 启动 simplest.py
proc = subprocess.Popen(["python3", "/home/pi/Documents/8-17/simplest.py"])
# 监听 simplest.py 进程状态
while proc.poll() is None:
time.sleep(1)
print("simplest运行中.....")
# 检查网络状态
chinanet = isNetChainOK()
if chinanet is False:
print("网络异常")
getNet()
# 中断 simplest.py 进程
for p in psutil.process_iter():
if p.name() == 'simplest.py':
print("中断simplest.py")
p.kill()
# simplest.py 进程结束后检查返回值
if proc.returncode == 0:
print("simplest运行正常.....")
break
```
这样改进后,当网络异常时会中断 simplest.py 进程,等到网络恢复后再重新启动 simplest.py 进程。同时,代码也会检查 simplest.py 进程的返回值,只有在返回值为 0 时才会跳出循环。
阅读全文