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自动重试HTTP连接装饰器
Apr 28 Python
python结合opencv实现人脸检测与跟踪
Jun 08 Python
python利用datetime模块计算时间差
Aug 04 Python
Python正则表达式使用经典实例
Jun 21 Python
python urllib爬取百度云连接的实例代码
Jun 19 Python
用pandas按列合并两个文件的实例
Apr 12 Python
python读取excel指定列数据并写入到新的excel方法
Jul 10 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
Dec 04 Python
python版本五子棋的实现代码
Dec 11 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
Jun 28 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
Python预测分词的实现
Jun 18 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 curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
html下载本地
2006/06/19 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
Python的Tornado框架异步编程入门实例
2015/04/24 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
Python部署web开发程序的几种方法
2017/05/05 Python
python3 shelve模块的详解
2017/07/08 Python
django实现前后台交互实例
2017/08/07 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
Mac安装python3的方法步骤
2019/08/09 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
体育专业学生自我评价范文
2014/01/17 职场文书
关于安全的广播稿
2014/10/23 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL