查了好多资料,网上无非都是通过event 标志位进行python线程的暂停和停止。并不是强制暂停和恢复线程。直接上代码吧
import threading
import ctypes
class CustomThread(threading.Thread):
def __init__(self, target=None, args=(), kwargs=None, name=''):
threading.Thread.__init__(self, target=target, args=args, kwargs=kwargs, name=name)
self.kernel32 = ctypes.windll.kernel32
self.thread_flag = 0
def stop(self):
ctypes.pythonapi.PyThreadState_SetAsyncExc(self.ident, ctypes.py_object(SystemExit))
self.thread_flag = 0
return self.thread_flag
def start(self):
threading.Thread.start(self)
return
def pause(self):
handle = self.kernel32.OpenThread(0x0002, False, self.ident)
self.kernel32.SuspendThread(handle)
self.kernel32.CloseHandle(handle)
self.thread_flag += 1
return self.thread_flag
def resume(self):
handle = self.kernel32.OpenThread(0x0002, False, self.ident)
self.kernel32.ResumeThread(handle)
self.kernel32.CloseHandle(handle)
self.thread_flag -= 1
return self.thread_flag