python中threading开启关闭线程操作


Posted in Python onMay 02, 2020

在python中启动和关闭线程:

首先导入threading

import threading

然后定义一个方法

def serial_read():
...
...

然后定义线程,target指向要执行的方法

myThread = threading.Thread(target=serial_read)

启动它

myThread.start()

二、停止线程

不多说了直接上代码

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)

停止线程

stop_thread(myThread)

补充知识:python threading实现Thread的修改值,开始,运行,停止,并获得内部值

下面的半模版代码在 win7+python3.63 运行通过并且实测可行,为了广大想要实现python的多线程停止的同学

import threading
import time
class MyThread(threading.Thread):
  def __init__(self):
    threading.Thread.__init__(self)
    self.Flag=True        #停止标志位
    self.Parm=0         #用来被外部访问的
    #自行添加参数
  
  def run(self):
    while(True):
      if(not self.Flag):
        break
      else:
        time.sleep(2)
  
  def setFlag(self,parm):     #外部停止线程的操作函数
    self.Flag=parm #boolean
 
  def setParm(self,parm):     #外部修改内部信息函数
    self.Parm=parm
 
  def getParm(self):       #外部获得内部信息函数
    return self.Parm
 
 
if __name__=="__main__":
  testThread=MyThread()
  testThread.setDaemon(True)     #设为保护线程,主进程结束会关闭线程
  testThread.getParm()      #获得线程内部值
  testThread.setParm(1)      #修改线程内部值
  testThread.start()       #开始线程
  print(testThread.getParm())    #输出内部信息
  time.sleep(2)          #主进程休眠 2 秒
  testThread.setFlag(False)      #修改线程运行状态
  time.sleep(2)          #2019.04.25 修改
  print(testThread.is_alive())  #查看线程运行状态

于2018-08-24修正一次,修正为在继承thread.Thread时,没有对父类初始化

旧:

def __init__(self):
    self.Flag=True        #停止标志位
    self.Parm=0         #用来被外部访问的
    #自行添加参数

新:

def __init__(self):
    threading.Thread.__init__(self)
    self.Flag=True        #停止标志位
    self.Parm=0         #用来被外部访问的
    #自行添加参数

于2019年4月25日进行第二次修正,发现设置flag值后仍为true输出的情况,原因是输出在修改完成前执行,睡眠后结果正常

以上这篇python中threading开启关闭线程操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单介绍Python下自己编写web框架的一些要点
Apr 29 Python
Python3遍历目录树实现方法
May 22 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
利用python实现简单的邮件发送客户端示例
Dec 23 Python
Python数据类型之Dict字典实例详解
May 07 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
深入了解Python iter() 方法的用法
Jul 11 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
基于Django框架的权限组件rbac实例讲解
Aug 31 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
python 串行执行和并行执行实例
Apr 30 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 Python
浅谈python3打包与拆包在函数的应用详解
May 02 #Python
构建高效的python requests长连接池详解
May 02 #Python
如何基于windows实现python定时爬虫
May 01 #Python
如何基于python实现不邻接植花
May 01 #Python
Python接口测试结果集实现封装比较
May 01 #Python
解决python虚拟环境切换无效的问题
Apr 30 #Python
python爬虫实现POST request payload形式的请求
Apr 30 #Python
You might like
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
图解js图片轮播效果
2015/12/20 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
Python实现PS滤镜中马赛克效果示例
2018/01/20 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
快速解决PyCharm无法引用matplotlib的问题
2018/05/24 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
python生成器用法实例详解
2019/11/22 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
python中def是做什么的
2020/06/10 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
本科生学习总结的自我评价
2013/10/02 职场文书
北京英语导游词
2015/02/12 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript