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实现ping的方法
Jul 06 Python
使用Python的turtle模块画图的方法
Nov 15 Python
TF-IDF算法解析与Python实现方法详解
Nov 16 Python
理解python中生成器用法
Dec 20 Python
Python实现检测文件MD5值的方法示例
Apr 11 Python
Python基于opencv的图像压缩算法实例分析
May 03 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
如何在Python中实现goto语句的方法
May 18 Python
python实现连连看辅助(图像识别)
Mar 25 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
Aug 05 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 Python
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Apr 21 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
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
PHP 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
php生成zip文件类实例
2015/04/07 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
jQuery操作css样式
2017/05/15 jQuery
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
JAVA面试题 static关键字详解
2019/07/16 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
Python深入学习之上下文管理器
2014/08/31 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
wxPython多个窗口的基本结构
2019/11/19 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
Python Merge函数原理及用法解析
2020/09/16 Python
python 简单的调用有道翻译
2020/11/25 Python
银行职业规划书范文
2013/12/28 职场文书
公积金转移接收函
2014/01/11 职场文书
新闻编辑求职信
2014/04/09 职场文书
初中英语教师个人工作总结2015
2015/07/21 职场文书
中职班主任培训心得体会
2016/01/07 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python