python中threading开启关闭线程操作
作者:小灰灰搞电子 发布时间:2022-10-02 22:40:26
标签:python,threading,线程
在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输出的情况,原因是输出在修改完成前执行,睡眠后结果正常
来源:https://blog.csdn.net/qq_15181569/article/details/93299164


猜你喜欢
- 上期回顾:亚马逊购物用户体验分析 (一)“查找内部”功能书是在亚马逊最常被购买的产品之一,所以毋庸置疑亚马逊的开发小组已经建立了一个关于“查
- viper作为配置框架,其功能非常的强大,我们没有理由不去了解一下。我们先看官网对它的功能简介:viper是完整配置解决方案,他可以处理所有
- 在熟悉了Python的基本安装与环境配置之后,我们来看看Python的基本运算操作。1. 基本运算>>>6 # 这里的‘#
- TCP是用来计算机之间进行通信的,通过编写客户端和服务端聊天的代码,对于服务器与客户端的工作步骤有了深刻的了解,在这里根据了不起的Node.
- 1. 内部重构#2. 外部重构#website/blog/urls.pywebsite/website/urls.py3. 两种参数处理方式
- 这篇文章主要介绍了Python concurrent.futures模块使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一
- object.OpenTextFile(filename[, iomode[, create[, format]]]) 参数 object
- 摘要:在学习与科研中,经常会遇到一些数学运算问题,使用计算机完成运算具有速度快和准确性高的优势。Python的Numpy包具有强大的科学运算
- 版本说明Python 3.0在设计的时候没有考虑向较早版本相容Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库
- #!/bin/env python # -*- coding: utf-8 -*- #filename: peartes
- 一 按时间创建文件源码# 截图方式二# coding=utf-8import osimport time# 当前年月日时分秒时间 2020-
- 前言当我们的项目达到一定的规模时,对于某些组件来说,我们并不希望一开始全部加载,而是需要的时候进行加载;这样的做得目的可以很好的提高用户体验
- 简介查看百度搜索中文文本聚类我失望的发现,网上竟然没有一个完整的关于Python实现的中文文本聚类(乃至搜索关键词python 中文文本聚类
- py文件不是html文件,当然不能在浏览器里打开。py文件可以用任何编辑器打开,py文件是和txt一样都是普通的文本文件,只是python解
- 问题,在一个程序内构建好了一个图,运行完之后想重新使用这个图进行计算,或者想同时在train完的时候做test,就会提示***变量已存在。解
- 今天一同事需要整理http://ics.cnvd.org.cn/工控漏洞库里面的信息,一看960多个要整理到什么时候才结束。所以我决定写个爬
- 1 GitHub创建作为图床的仓库1.1 在GitHub中创建一个仓库注意仓库要是public的,不然上传的图片还是无法使用的。如果不知道怎
- 首先总结的意义就是让杂乱无章变得更加井然有序,这样在使用的过程思路会更加清晰。数组使用方法注意点:变异方法和非变异方法。即变异方法使用会改变
- 当鼠标移动上去后,字慢慢的变大的 效果应该 如果实现啊<!DOCTYPE html PUBLIC "-//W3C//DTD
- 通常能听到的答案是使用了NULL值的列将会使索引失效,但是如果实际测试过一下,你就知道IS NULL会使用索引.所以上述说法有漏洞.着急的人