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

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

1.python创建线程它使用的都是python内置模块threading,那么要停止线程首先就需要创建出线程,python多线程是以函数来作为执行单位的。所以在导入threading模块之后还需要定义个函数才能创建并启动线程,代码示例如下所示:

import threading
def serial_read():
    pass
myThread = threading.Thread(target=serial_read)
myThread.start()

2.那么停止线程的话就不能够使用到threading模块了,它需要自己去创建函数才能够完成线程的关闭了。主要用到的就是inspect模块和ctypes模块,这两个模块一个能够解析线程的堆栈从而的到它的id,而后一个模块则能够去调用和Python兼容的C语言接口来关闭线程,代码示例如下:

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:
        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关闭线程的方法是什么”的全部内容了,希望对你有所帮助。

更多python相关文章请访问分类:python

【版权声明】本文图文出自大盘站@dapan.cc,转载请注明出处!