目标:
    1:掌握什么是守护线程
    2:掌握 setDaemon 方法设置子线程守护主线程
    3:知道pycharm软件按住结束程序按钮显示骷髅头是为什么?


    一:什么是守护线程?

    答:即子线程与主线程的一种约定!将子线程设置为守护主线程后,主线程结束运行后,守护线程(子线程)也会自动结束,反之,主线程没有结束运行,守护线程也不会结束运行。可以将主线程比作皇上,设置为守护线程的子线程比作妃子,皇上驾崩(主线程结束),则妃子们全部殉葬(全部守护线程全部结束执行)

    答:如果不将子线程设置为守护线程,在主线程意外结束执行后子线程还会继续执行,这样是缺乏逻辑的,因此要设置守护线程!

    二:子线程设置为守护线程—— 创建的子线程对象.setDaemon(True)

    功能:将子线程设置为守护线程,在主线程结束运行后(意外结束等),守护线程(子线程)也全部结束运行!
    语法:创建的子线程对象 . setDaemon(True)
    **
    注意事项:

    1:将子线程设置为守护线程要在 thread.start()之前设置!
    2:如果不将子线程设置为守护线程,主线程意外结束后,子线程会继续执行,这样是不允许的!
    3:什么情况下主程序执行完毕?就是在if name == ‘main‘:这行代码下面除了守护线程的代码外,其余代码均执行完毕即主程序执行结束!!

    快速代码体验(没将子线程设置为守护线程的结果)

    image.png

    将子线程设置为守护线程后的结果截图

    image.png

    三:pycharm软件按住结束程序按钮显示骷髅头是为什么?

    答:因为按下程序结束按钮,主程序结束,但因为多线程,故子线程没有结束执行,子线程还在继续执行,这是没有将子线程设置为守护线程的缘故!!!

    image.png