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简单网络编程示例【客户端与服务端】
May 26 Python
利用python模拟sql语句对员工表格进行增删改查
Jul 05 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
Jun 18 Python
python pandas 时间日期的处理实现
Jul 30 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
Jan 16 Python
python-sys.stdout作为默认函数参数的实现
Feb 21 Python
python opencv肤色检测的实现示例
Dec 21 Python
浅谈Python 中的复数问题
May 19 Python
python 爬取吉首大学网站成绩单
Jun 02 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
php多进程应用场景实例详解
2019/07/22 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
学习jquery之一
2007/04/27 Javascript
jquery 实现的全选和反选
2009/04/15 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
javascript简易画板开发
2020/04/12 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
微信小程序实现列表下拉刷新上拉加载
2020/07/29 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
python执行精确的小数计算方法
2019/01/21 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
比驿:全球酒店比价网
2018/06/20 全球购物
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
经贸日语毕业生自荐信
2013/11/03 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
结婚幸福感言
2015/08/01 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
Mysql基础知识点汇总
2021/05/26 MySQL
python Tkinter模块使用方法详解
2022/04/07 Python