Python中的threading库是比较弱的, 下面有两种方法可以终止Python线程
方法一:抛出SystemExit异常
扩展Python标准库中threading模块的方法, 通过抛出SytemExit, 允许一个线程在另一个线程的上下文中引发异常然后完全的结束此线程:

下面通过一个gtk下载程序,来测试, 运行界面如下:

下载的过程中不停的打印index,当点击kill时,终止下载线程, 代码例子地址: neteue.com/article/kill-python-thread/
方法二:使用pthreadimport ctypes
pthread = ctypes.dll.LoadLibrary("libpthread-2.15.so")
pthread.pthread_cancel(ctypes.c_ulong(t.ident))
1. t为Thread对象
2. 最好捕获一下LoadLibrary的异常,以及其他异常问题,比如t已经结束了等。
3. 你所使用的python必须是pthread版本。
4. 核心在于Thread.ident其实就是pthread_create时候返回的pthread_t
5. 如果你需要使用这个方法,几乎可以肯定是程序的逻辑有问题,不是python故意不让你这么做。
6. 基于t.ident就是pthread_t,python代码其实可以做任何pthread能操作的操作。
windows上处理方式:
把libpthread-XXX.so换成Kernel32.dll
与pthread_cancel等价的是TerminateThread
与pthread_join等价的是WaitForSingleObject