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 MySQLdb Linux下安装笔记
May 09 Python
python常见数制转换实例分析
May 09 Python
在Python中marshal对象序列化的相关知识
Jul 01 Python
Python进阶学习之特殊方法实例详析
Dec 01 Python
python实现两个文件合并功能
Apr 01 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
CentOS7下python3.7.0安装教程
Jul 30 Python
python删除字符串中指定字符的方法
Aug 13 Python
Python Flask 搭建微信小程序后台详解
May 06 Python
python模拟点击网页按钮实现方法
Feb 25 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 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中http_build_query 的一个问题
2012/03/25 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
js 图片缩放(按比例)控制代码
2009/05/27 Javascript
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
wxPython的安装图文教程(Windows)
2017/12/28 Python
Python异常的检测和处理方法
2018/10/26 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
大专生工程监理求职信
2013/10/04 职场文书
工作的心得体会
2013/12/31 职场文书
自我鉴定四大框架
2014/01/17 职场文书
高一物理教学反思
2014/01/24 职场文书
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
感恩之星事迹材料
2014/05/03 职场文书
2014年防汛工作总结
2014/12/08 职场文书
求职自我评价怎么写
2015/03/09 职场文书
刑事上诉状范文
2015/05/22 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
Python进程间的通信之语法学习
2022/04/11 Python