zoukankan      html  css  js  c++  java
  • 守护进程和守护线程的区别

    守护进程

    注意:daemon=True 必须写在 start()之前 

    import time
    from multiprocessing import Process
    def func():
        for i in range(20):
            time.sleep(0.5)
            print('in func')
    
    def func2():
        print('start : func2')
        time.sleep(5)
        print('end : func2')
    
    if __name__ == '__main__':
        p = Process(target=func)
        p.daemon = True   # 表示设置p为一个守护进程
        p.start()
        p2 =Process(target=func2)
        p2.start()
        print('in main')
        time.sleep(3)
        print('finished')
        p2.join()

    守护线程

    import time
    from threading import Thread
    
    def daemon_func():
        while True:
            time.sleep(0.5)
            print('守护线程')
    
    def son_func():
        print('start son')
        time.sleep(5)
        print('end son')
    
    t = Thread(target=daemon_func)
    t.daemon = True              #守护
    t.start()
    Thread(target=son_func).start()
    time.sleep(3)
    print('主线程结束')

    守护进程和守护线程的区别   

    无论是进程还是线程, 都遵循: 守护xxx 会等待主xxx 运行完毕后被销毁
    守护进程 :只会守护到主进程的代码结束
    守护线程 :会守护所有其他非守护线程的结束

    运行完毕井非终止运行
    对主进程来说, 运行完毕指的是主进程代码运行完毕
    对主线程来说, 运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕, 主线程才算运行完毕

    守护进程:

    主进程和子进程互不干扰
    主进程执行完毕之后程序不会结束,会等待所有的子进程结束之后才结束
    守护进程 :
    是一个子进程,守护的是主进程
    结束条件 : 主进程的代码结束,守护进程也结束


    主进程的代码结束,守护进程结束
    主进程要回收守护进程(子进程)的资源
    主进程等待其他所有子进程结束
    主进程回收所有子进程的资源

    守护线程:

    1.主线程会等待子线程的结束而结束
    2.守护线程会随着主线程的结束而结束
    守护线程会守护主线程和所有的子线程

    守护线程问题:

    1.主线程需不需要回收子线程的资源
    不需要,线程资源属于进程,所以进程结束了,线程的资源自然就被回收了
    2.主线程为什么要等待子线程结束之后才结束
    主线程结束意味着进程进程,进程结束,所有的子线程都会结束
    要想让子线程能够顺利执行完,主线程只能等
    3.守护线程到底是怎么结束的
    主线程结束了,主进程也结束,守护线程被主进程的结束结束掉了


    守护进程问题
    为什么主进程要等待子进程结束之后才结束?
    因为主进程要负责给子进程回收一些系统资源
  • 相关阅读:
    Oracle一次可以查询多个表的结果的方法
    nagios+logstash实时监控java日志(一)
    原 ELK+Filebeat集中式日志解决方案(centos7)
    关于系统运维监控规范的几点建议和思考
    web文件管理系统和日志实时监控工具
    [运维]ELK实现日志监控告警
    阿里云服务器 发送邮箱 STMP 25端口 465端口问题 Javamail 25被禁用
    Elasticsearch5.6搭建及拼音中文混合搜索实现
    ELK pipeline
    图解Elasticsearch中的_source、_all、store和index属性
  • 原文地址:https://www.cnblogs.com/whnbky/p/11552894.html
Copyright © 2011-2022 走看看