区分python中的守护线程和非守护线程

我记得有一次,我写了一个简单的Python程序,里面有一个守护线程和一个非守护线程。
守护线程负责打印数字,非守护线程等待用户输入。
我运行程序,然后输入了“EXIT”,结果程序立刻就退出了,连数字都没打印完。
我当时就在想,这守护线程和非守护线程到底有什么区别啊?
我试着注释掉非守护线程的部分,只留下守护线程,结果程序就一直在打印数字,直到我手动关闭。
我意识到,原来守护线程是那种不管任务完成与否,主线程一退出,它就跟着退出的线程。
而那个非守护线程,它就像一个顽强的战士,必须完成它的使命,才会让主线程退出。

我后来又想了想,如果我在守护线程里打开一个文件,然后不关闭,那程序退出时文件会不会还在那里呢?我决定试一试,结果发现,程序退出时,守护线程里的文件确实没有关闭,这让我意识到,在守护线程里操作资源时,一定要小心,避免资源泄露。

等等,还有个事,我突然想到,如果我在守护线程里加一个循环,让它一直运行,那主线程是不是永远不会退出了?我决定验证一下,结果果然如此。
我意识到,守护线程的使用要谨慎,因为它可能会影响整个程序的生命周期。

什么是守护线程 和普通线程的区别

哎哟,当时那个项目,我负责的那个模块,代码里有个逻辑,就是主线程要等所有普通线程都执行完了才能退出,这我一开始没看明白,当时也懵,就以为是个常规操作。
后来才反应过来,原来这背后还有这么个讲究。

那个城市,2 02 2 年,有个大项目,我们团队负责的模块,得处理的数据量,得,得有几百G吧,处理起来,得,得花上好几天,钱嘛,项目预算,得,得有几十万。

我当时还以为,只要主线程退出,程序就结束了,结果呢,一运行,全队人都傻眼了,守护线程还在后台默默执行,我当时那个气啊,可能我偏激了点,但当时真觉得,这项目怎么这么复杂。