python通过psutil库监管程序运行状态并进行重启

对于需要长时间运行的程序而言,由于各种异常状态而导致程序退出是非常常见的现象。为了减少程序退出导致的任务进度损失,我们可以通过外部的程序来对特定的任务进行监管。在程序结束后不需要人参与而马上重新启动。

psutil库提供了便利的函数用来获取才做系统的信息,比如CPU,内存,磁盘,网络等。psutil还可以用来进行进程管理,包括判断进程是否存在、获取进程列表、获取进程详细信息等。

首先我们需要安装psutil库

pip install psutil

在确定好需要监管的程序后,如果在for上使用psutil.pids(),则可以验证所有此进程是否使用python,与此同时判断运行的脚本是否存在于命令行列表内,同时符合条件时,可以确认程序正在运行,否则程序处于关闭状态

import psutil

def verification():
    for pid in psutil.pids():
        p = psutil.Process(pid)
        if p.name() == "python.exe" and len(p.cmdline()) > 1 and "headar.py" in p.cmdline()[1]:
            print("running")
            return 0
        else:
            print('wait')
            return 1

在确认程序状态后,我们可以根据上述函数的返回值来判断目前的程序状态,并根据需要重新启动程序

import os

cnt=0
while(cnt<500):
    cnt=cnt+verification()
    os.system('header.py')

这样就实现了程序长时间运行并自动监管的功能

 

posted @ 2021-02-27 16:50  btc  阅读(792)  评论(0编辑  收藏  举报