[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的操作,或者杀死进程的操作,可以参考守护进程中的实现方法。

posted @ 2012-09-27 22:07  gmark  阅读(1293)  评论(0)    收藏  举报