Python怎么停止线程?Python关闭线程的方法是什么

python原本是不支持多线程形式来运行程序的,但是python可以通过模块来实现多线程 。那么python多线程在执行之后,有些线程可能因为滞留等问题需要手动关闭 。这就需要用到停止线程的方法了,这一篇文章将会带来关闭python线程的方法,往下看看吧 。

Python怎么停止线程?Python关闭线程的方法是什么

文章插图
1.python创建线程它使用的都是python内置模块threading,那么要停止线程首先就需要创建出线程,python多线程是以函数来作为执行单位的 。所以在导入threading模块之后还需要定义个函数才能创建并启动线程,代码示例如下所示:
import threadingdef serial_read():    passmyThread = threading.Thread(target=serial_read)myThread.start()【Python怎么停止线程?Python关闭线程的方法是什么】2.那么停止线程的话就不能够使用到threading模块了,它需要自己去创建函数才能够完成线程的关闭了 。主要用到的就是inspect模块和ctypes模块,这两个模块一个能够解析线程的堆栈从而的到它的id,而后一个模块则能够去调用和Python兼容的C语言接口来关闭线程,代码示例如下:
import inspectimport ctypesdef _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:        ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)        raise SystemError("PyThreadState_SetAsyncExc failed")def stop_thread(thread):_async_raise(thread.ident, SystemExit)stop_thread(myThread)在上面的代码示例之中只需要将线程对象给传递进去就可以了,这个线程对象就是包含了id信息的,通过它可以去获取到实际上的id 。然后去判断一下数据类型是否为线程,最后调用ctypes的接口去将线程给强行的关闭掉 。线程关闭之后所执行的函数也将停止,所以在使用这个方法之前需要考虑清除是否需要关闭线程 。
以上就是关于“Python怎么停止线程?Python关闭线程的方法是什么”的全部内容了,希望对你有所帮助 。

    推荐阅读