擅长:python、mysql、java
<p>在找另一个问题的时候偶然发现了这个问题。
我来晚了一点,但我想我可以为任何有类似问题的人提供一个解释。在</p>
<p>当CPython解释器跟踪线程时,它将它们放入
三类。在</p>
<ul>
<li>正常</li>
<li>守护程序</li>
<li>外星人</li>
</ul>
<p>Normal用于通过线程模块启动的常规python线程。当这些线程或主线程正在运行时,解释器将不会退出。在</p>
<p>类似地,守护程序线程是通过线程模块启动的线程;但是,它们已被标记为守护程序。在这种情况下,解释器在退出之前不会等待它们终止。在</p>
<p>最后,外来线程是在与CPython相同的进程中启动的线程,但不是由任何python代码启动的。解释器知道这些,但不知道如何等待它们,因此将它们视为守护进程线程,而不是等待它们在退出之前终止。在</p>
<p>为了更好地处理windows上的线程(加上没有GIL),请查看IronPython。它可能比较慢,但它只是更好地处理这样的.NET交互,因为它是作为本机.NET运行的。在</p>