需要引入psutil包;
实现思路:
1)用os.getpid()获取当前程序运行PID,将PID存入文件中
2)用psutil模块获取当前系统所有正在运行的pid
3)读取之前存入的PID,判断该PID是否在系统PID中
4)如果文件中的PID在系统PID中,则退出程序,否则存入新的PID,运行程序。
# -*- coding:utf-8 -*- import os import psutil import time def write_pid(): pid = os.getpid() fp = open("pid.log",'w') fp.write(str(pid)) fp.close() def read_pid(): if os.path.exists("pid.log"): fp = open("pid.log",'r') pid = fp.read() fp.close() return pid else: return False def write_log(log_content): time_now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) log_content = time_now+"---->"+log_content+os.linesep fp = open('recognition.log','a+') fp.write(log_content) fp.close() def run(): pid = read_pid() #print pid pid = int(pid) if pid: running_pid = psutil.pids() if pid in running_pid: log_content = "process is running..." write_log(log_content) else: write_pid() time.sleep(20) else: print "process is not running..." write_pid() time.sleep(20) if __name__ == "__main__": run()