[Python]多进程
多进程的方法就是传统的fork语句,如果返回为0,则子进程创建成功,在进程中运行
#在子进程fork之前,调用本方法防止僵尸进程的出现 #SIGCHLD为子进程,交给系统0号进程 init去回收 signal.signal(signal.SIGCHLD,signal.SIG_IGN) #如果fork的返回值为0,则说明是子进程 if(0 == os.fork()): #创建一个新的守护进程 daemon = MyDaemon(pidfile) if daemon: daemon.start()
守护进程和多进程结合起来,可以做到主进程根据需要去创建子守护进程执行任务,并检测子进程是否存在,如果子进程挂掉,可以自动拉起子进程。
检查一个进程是否存在,可以检查他的pid是否存在。
由于守护进程创建的时候,会自己指定pidfile的地址,所以可以去读pidfile中的pid,然后查看 /proc/pid 这个目录是否存在(os.path.exists()),如果不存在,那么进程就是挂掉了,这时我们删掉pidfile,再把进程创建一边就可以了。删除pidfile的操作,或者杀死进程的操作,可以参考守护进程中的实现方法。