python

超轻量级php框架startmvc

在python中实现强制关闭线程的示例

更新时间:2020-06-22 06:24:01 作者:startmvc
如下所示:importthreadingimporttimeimportinspectimportctypesdef_async_raise(tid,exctype):"""raisestheexception,perf

如下所示:


import threading
import time
import inspect
import ctypes


def _async_raise(tid, exctype):
 """raises the exception, performs cleanup if needed"""
 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):
 _async_raise(thread.ident, SystemExit)


class TestThread(threading.Thread):
 def run(self):
 print
 "begin"
 while True:
 time.sleep(0.1)
 print('end')


if __name__ == "__main__":
 t = TestThread()
 t.start()
 time.sleep(1)
 stop_thread(t)
 print('stoped') 

以上这篇在python中实现强制关闭线程的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python 关闭线程