您所描述的是可以异步停止的线程。
如上所述 这里 ,有两种主要方法。 其中之一是让线程代码检查某些事件(由 u.stop() 在你的例子中)它做的每一个操作。
u.stop()
另一种解决方案是强制将错误引发到某个线程中。这种方法实现起来比较简单,但可能会导致意外行为,并且线程代码越复杂,它就越危险。
import ctypes ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, 0)
哪里 tid 是要终止的线程。您可以通过运行(在线程中)获取线程ID:
tid
print self._thread_id
关于中的更多信息 线程2 Tomer Filiba的博客文章。