self.th = threading.Thread(target=self.fun)
用 th.stop() 会报错 'Thread' object has no attribute 'stop',请教threading如何在运行过程中停止
python问题,threading如何stop
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
给你骨质唱疏松 2021-09-29 15:48关注from threading import Thread import time import inspect import ctypes def _async_raise(tid, exctype): tid = ctypes.c_long(tid) if not inspect.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") def stop_thread(thread): thread._is_stopped = True # 修改线程状态 _async_raise(thread.ident, SystemExit) def task(): for i in range(1, 100): print(i) time.sleep(1) if __name__ == '__main__': th = Thread(target=task) th.start() # 开始线程 print(th.is_alive()) # 查看线程运行状态 time.sleep(2) stop_thread(th) # 终止线程 print(th.is_alive()) # 查看线程运行状态运行结果:
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用