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+django实现文件上传
Jan 17 Python
对pandas中apply函数的用法详解
Apr 10 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
May 11 Python
说说如何遍历Python列表的方法示例
Feb 11 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
Feb 12 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
python flask搭建web应用教程
Nov 19 Python
python如何实现单链表的反转
Feb 10 Python
Python使用sqlite3模块内置数据库
May 07 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 Python
Python操控mysql批量插入数据的实现方法
Oct 27 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
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
js如何验证密码强度
2020/03/18 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
python检查指定文件是否存在的方法
2015/07/06 Python
Python导出DBF文件到Excel的方法
2015/07/25 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
Python开发的实用计算器完整实例
2017/05/10 Python
django认证系统 Authentication使用详解
2019/07/22 Python
python 进程的几种创建方式详解
2019/08/29 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
英语硕士生求职简历的自我评价
2013/10/15 职场文书
餐饮业创业计划书范文
2014/01/06 职场文书
大学旷课检讨书
2014/01/28 职场文书
校园文明倡议书
2014/05/16 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
python 标准库原理与用法详解之os.path篇
2021/10/24 Python
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL