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,转载请注明出处!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。