擅长:python、mysql、java
<p>一个<code>multiprocessing.Process</code>可以<code>p.terminate()</code></p>
<p>如果我想杀死一个线程,但不想使用flags/locks/signals/semaphores/events/whatever,我会将线程提升为完全成熟的进程。对于只使用几个线程的代码,开销并没有那么大。</p>
<p>例如,这可以方便地终止执行阻塞I/O的助手“线程”</p>
<p>转换很简单:在相关代码中,将all <code>threading.Thread</code>替换为<code>multiprocessing.Process</code>,将all <code>queue.Queue</code>替换为<code>multiprocessing.Queue</code>,并将所需的<code>p.terminate()</code>调用添加到要杀死其子进程的父进程<code>p</code></p>
<p><a href="http://docs.python.org/release/3.1.3/library/multiprocessing.html" rel="noreferrer">Python doc</a></p>