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获取从命令行输入数字的方法
Apr 29 Python
在DigitalOcean的服务器上部署flaskblog应用
Dec 19 Python
Django学习教程之静态文件的调用详解
May 08 Python
Python使用sorted对字典的key或value排序
Nov 15 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 Python
django框架创建应用操作示例
Sep 26 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
Win系统PyQt5安装和使用教程
Dec 25 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
在keras下实现多个模型的融合方式
May 23 Python
基于pycharm实现批量修改变量名
Jun 02 Python
利用Python批量识别电子账单数据的方法
Feb 08 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 slow log分析工具的比较分析
2011/05/22 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
php实现paypal 授权登录
2015/05/28 PHP
PHP 错误处理机制
2015/07/06 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
jquery获取input的value问题说明
2010/08/19 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
JS+Canvas绘制时钟效果
2020/08/20 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
python提取字典key列表的方法
2015/07/11 Python
python中列表和元组的区别
2017/12/18 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
如何理解委托
2012/01/06 面试题
一套Delphi的笔试题一
2016/02/14 面试题
高中英语教学反思
2014/02/04 职场文书
房地产开盘策划方案
2014/02/10 职场文书
教学评估实施方案
2014/03/16 职场文书
领导干部学习心得体会
2016/01/23 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书
Java 在线考试云平台的实现
2021/11/23 Java/Android