python 守护线程

Q.什么是守护线程?
A:很通俗的就是说:"Tank上顶塔,刺客切割"。我们把主要输出看成我们的主进程,而我们的Tank就是我们的子进程。守护进程就是告诉主进程你做就好了,不要等我!
一般创建了子进程,主线程都会等子进程完全执行完,主进程才会结束,而守护线程就是主线程不等子进程,主线程做完程序立马结束。

#注意一定要把daemo 设置在 start 之前设置
p=Process(target=func)
 p.daemon=True

下面是一个例子

from multiprocessing import Process
import  time
def func():
    time.sleep(0.2)
    print("我还活着")

if __name__=='__main__':
    p=Process(target=func)
    p.daemon=True #子进程变成守护进程 一定要在start 之前设置
    p.start()
    print('已完成')
python 守护线程_第1张图片
image.png

我们可以看出 子进程并没有被打印,因为主进程在子进程之前完成的!这样子进程还在休眠之中。
下面是普通

def  func2():
    print("888888")
    time.sleep(8)
    print("8888888888888111111")
if __name__=='__main__':
    p=Process(target=func)
    # p.daemon=True #子进程变成守护进程 一定要在start 之前设置
    # p.start()
    # print('已经完成')
    Process(target=func2).start() ##普通进程
    print("普通线程完成")

运行结果如下:


python 守护线程_第2张图片
image.png

通过上面的例子我们可以看出普通进程和守护线程的区别

注意点

注意一定要把daemo 设置在 start 之前设置

这里可能小伙伴就会想起 join()函数 为什么你的例子没有写join()
Join()是主程序等我这个进程执行完毕了,程序才往下走,不影响我们的实验。
突然想到如果我定义了子进程为守护线程 那么就算给它加上join() 也不会影响。自己可以测试一下!

你可能感兴趣的:(python 守护线程)