看一下线程的setDaemon()方法
importtimeimportthreadingimportctypesimportinspectdefsayHello():for i in range(10):print("hello")
time.sleep(1)def_async_raise(tid, exctype):"""raises the exception, performs cleanup if needed"""tid=ctypes.c_long(tid)if notinspect.isclass(exctype):
exctype=type(exctype)
res=ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))if res ==0:raise ValueError("invalid thread id")elif res != 1:#"""if it returns a number greater than one, you're in trouble,
#and you should call it again with exc=NULL to revert the effect"""
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)raise SystemError("PyThreadState_SetAsyncExc failed")defstop_thread(thread):
_async_raise(thread.ident, SystemExit)if __name__ == '__main__':#sayHello()
t &#