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 15 Python
python使用reportlab画图示例(含中文汉字)
Dec 03 Python
python判断windows系统是32位还是64位的方法
May 11 Python
python定时执行指定函数的方法
May 27 Python
在Python的struct模块中进行数据格式转换的方法
Jun 17 Python
日常整理python执行系统命令的常见方法(全)
Oct 22 Python
详解Python中where()函数的用法
Mar 27 Python
python实现俄罗斯方块游戏
Mar 25 Python
python实现静态web服务器
Sep 03 Python
python英语单词测试小程序代码实例
Sep 09 Python
如何将你的应用迁移到Python3的三个步骤
Dec 22 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 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基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
2013/10/29 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
理解javascript中的闭包
2017/01/11 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
django 发送手机验证码的示例代码
2018/04/25 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
django 单表操作实例详解
2019/07/30 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
幼儿园保育员辞职信
2014/01/12 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
大学生自我评价200字(4篇)
2014/09/17 职场文书
团组织推优材料
2014/12/29 职场文书
故宫的导游词
2015/01/31 职场文书
整改通知书格式
2015/04/22 职场文书
三国演义读书笔记
2015/06/25 职场文书
课题研究阶段性总结
2015/08/13 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
Python内置数据结构列表与元组示例详解
2021/08/04 Python
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python
分享提高 Python 代码的可读性的技巧
2022/03/03 Python