守护进程和守护线程的对比

守护进程和守护线程的对比

守护进程:守护进程会随着主进程的代码结束而结束,如果主进程结束之后还有其他子进程在运行,守护进程是不守护的,

  • 在windows系统中开启线程需要加 if __name__ == 'main':,Linux,mac系统中则不用

    from multiprocessing import Process
    
    import time
    def son1():
        while True:
            time.sleep(0.1)
            print('in son1')
    
    def son2():
        while True:
            time.sleep(0.1)
            print('in son2')
    if __name__ == '__main__':
        s=Process(target=son1)
        s.daemon=True
        s.start()
        t = Process(target=son2)
        t.start()
        # t.join()  #son2结束后守护进程在结束
    

守护线程:守护线程会随着主线程的结束而结束,如果主线程代码结束之后还有其他线程在运行,那么守护线程也守护

import time
from threading import Thread

def son1():
    while True:
        print('in son1')
        time.sleep(1)
def son2():
    while True:
        print('in son2')
        time.sleep(1)
s1=Thread(target=son1)
s1.daemon=True
s1.start()
s2=Thread(target=son2)
s2.start()

为什么守护进程和守护线程有区别?

  • 守护进程和守护线程的结束原理不同
  • 守护进程需要主进程来回收子进程的资源,守护线程会随着进程的结束而结束
  • 守护线程的原理:其他子线程结束---》主线程结束 ---》主进程结束---》整个进程中的资源都被回收---》守护线程也会被回收
posted @ 2021-07-02 00:50  刘家小仙女  阅读(90)  评论(0编辑  收藏  举报