擅长:python、mysql、java
<p>有几种方法。第一种方法是使用</p>
<p>在穿线方面</p>
<pre><code>myThread.setDaemon(true)
</code></pre>
<p>在多处理中</p>
<pre><code>myThread.daemon = True
</code></pre>
<p>所有标记为守护进程的线程都将与主线程一起终止。这不是正确的方法,因为它不允许线程清理</p>
<p>下一种方法是使用try catch监听<code>KeyboardInterrupt</code>,然后.join()这样的线程。</p>
<pre><code>try:
myThread = MyThread()
except KeyboardInterrupt:
myThread.join()
</code></pre>
<p>如果线程处于循环中,则可以使用布尔值等条件,将其设置为false,当条件为false时,它将执行清理。</p>
<pre><code>class MyThread(Threading.thread):
def __init__(self):
self.alive=True
def run(self):
while self.alive:
#do stuff
#cleanup goes here, outside the loop
try:
myThread = MyThread()
except KeyboardInterrupt:
myThread.alive = False
myThread.join()
</code></pre>