对于需要长时间运行的程序而言,由于各种异常状态而导致程序退出是非常常见的现象。为了减少程序退出导致的任务进度损失,我们可以通过外部的程序来对特定的任务进行监管。在程序结束后不需要人参与而马上重新启动。
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')
这样就实现了程序长时间运行并自动监管的功能