10月26日守护进程

发布时间 2023-10-26 20:29:56作者: songjunwan

守护进程

什么是守护进程呢?

它的本质上也是一个子进程,但是它的子进程的区别点就在于,主进程的代码执行完毕守护进程就会直接结束掉,也就是说一般情况下是看不到守护进程的。

基本的代码

"""
守护进程
守护--》伴随
本质上也是一个子进程
主进程的代码执行完毕守护进程直接结束掉
"""
# 基础版
from multiprocessing import Process


def shohu():
    print('守护进程启动')
    print('守护进程结束')


if __name__ == '__main__':
    p = Process(target=shohu)
    p.daemon = True#这里把这个子进程定义为守护进程
    p.start()
    print('主进程')

然后结果如图

当我用daemon定义这个子进程为守护进程后,开始让代码运行,主进程一结束整个代码都结束了然后守护进程里面的数据一点都没有出现,所以守护进程是伴随主进程启动而启动,主进程结束它就结束

那么如何让守护进程里面的内容出现呢,这里要用到time模块,用这个模块让主进程暂时睡眠

import time
from multiprocessing import Process


def foo():
    print('守护进程开始')
    time.sleep(1)
    print('守护进程结束')


if __name__ == '__main__':
    p = Process(target=foo)

    p.daemon = True  # 把这个子进程定义为了守护进程

    p.start()

    time.sleep(5)#这里让主进程睡眠5秒
    
    print('主')

这个代码里面我让主进程进行睡眠5秒

结果如下

按照守护进程的逻辑当主进程结束了它就会立刻结束,所以我让主进程睡眠5秒这段时间里就可以让守护进程输出它里面的内容了

守护进程和主进程之间可以这么理解,主进程就是皇帝,然后守护进程就是他身边的太监,皇帝驾崩了他身边的这个太监就会陪葬。