python线程isalive_如何在线程类上使用.isAlive()
我有Gui,有独立的线程,但我需要一个线程成为一个按钮,我的问题是,当我按下按钮,它创建了一个无限循环,不断产生新的线程。在
因此,我需要检查线程.isAlive()是否通过,如果通过,则启动线程:if ThreadedTask.isAlive() == True:
pass
else:
self.queue = Queue.Queue()
ThreadedTask(self.queue).start()
但当我这样做时,我得到了以下错误:
^{pr2}$
有人能告诉我是什么引起的吗?为了完整起见,我在下面添加了完整的类和按钮函数:class ThreadedTask(Thread):
def __init__(self, queue):
Thread.__init__(self)
self.daemon = True
self.queue = queue
def run(self):
proc = Popen("receivetest -f=/dev/pcan33".split(), stdout = PIPE)
if terminated == 1:
proc.kill()
payload = iter(proc.stdout.readline, "")
for line in payload:
if line[0].isdigit():
splitline = line.split()
self.dictAdd(splitline)
def dictAdd(self, info):
global mydict
can_ID = info[4]
p = PCANmsg()
p.dlc = int(info[5])
p.CANtime = float(info[0])
p.hdata0 = info[6]
p.hdata1 = info[7]
p.hdata2 = info[8]
p.hdata3 = info[9]
p.hdata4 = info[10]
p.hdata5 = info[11]
p.hdata6 = info[12]
p.hdata7 = info[13]
p.timing = 1
if can_ID in mydict.keys():
q = mydict[can_ID]
p.COUNT = q.COUNT + 1
p.PCANperiod = p.CANtime - q.CANtime
else:
p.COUNT = 1
p.PCANperiod = 0.0
mydict[can_ID] = p
s = '%06X : %3d %02X %02X %02X %02X %02X %02X %02X %02X\t %8.2F %8d ' %\
(int(can_ID,16),
p.dlc,
int(p.hdata0, 16),
int(p.hdata1, 16),
int(p.hdata2, 16),
int(p.hdata3, 16),
int(p.hdata4, 16),
int(p.hdata5, 16),
int(p.hdata6, 16),
int(p.hdata7, 16),
p.PCANperiod,
p.COUNT)
self.queue.put(s)
按钮功能:def RecvBtn_Click(self):
if ThreadedTask.isAlive() == True:
pass
else:
self.queue = Queue.Queue()
ThreadedTask(self.queue).start()
try:
info = self.queue.get(0)
info_split = info.split()
if self.RecvList.size() < len(mydict):
for _i in mydict.keys():
self.RecvList.insert("end",'%06X : %3d %02X %02X %02X %02X %02X %02X %02X %02X\t %8.2F %8d ' %\
(int(_i,16),
mydict[_i].dlc,
int(mydict[_i].hdata0, 16),
int(mydict[_i].hdata1, 16),
int(mydict[_i].hdata2, 16),
int(mydict[_i].hdata3, 16),
int(mydict[_i].hdata4, 16),
int(mydict[_i].hdata5, 16),
int(mydict[_i].hdata6, 16),
int(mydict[_i].hdata7, 16),
mydict[_i].PCANperiod,
mydict[_i].COUNT))
else:
for i, listbox_entry in enumerate(self.RecvList.get(0, "end")):
list_split = listbox_entry.split()
if list_split[0] == info_split[0]:
self.RecvList.delete(i)
self.RecvList.insert(i, info)
else:
continue
# self.RecvList.insert("end", info)
self.window.after(20, self.RecvBtn_Click)
except Queue.Empty:
self.window.after(100, self.RecvBtn_Click)
python线程isalive_如何在线程类上使用.isAlive()相关推荐
- python 在主线程开线程_Python开启线程,在函数中开线程的实例
逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...
- python关闭线程根据id_python之线程相关操作
1.线程: 一个进程可以有多个线程,共享一个进程的资源: 2.进程线程的区别: 进程是资源分配的最小单位,线程是程序执行的最小单位 3.python中线程模块threading, 提供的类: Thre ...
- Python模块整理(四):线程模块threading
参考网络以及python书籍整理 一.Python threading三种调用方式介绍: Thread 是threading模块中最重要的类之一,可以使用它来创建线程. 第一种方式:创建一个threa ...
- python 子线程返回值_python-从线程返回值
python-从线程返回值 我如何获得一个线程以将元组或我选择的任何值返回给Python中的父级? 12个解决方案 59 votes 我建议您在启动线程之前实例化Queue.Queue,并将其作为线程 ...
- Python | 面试必问,线程与进程的区别,Python中如何创建多线程?
其实关于元类还有很多种用法,比如说如何在元类当中设置参数啦,以及一些规约的用法等等.只不过这些用法比较小众,使用频率非常低,所以我们 不过多阐述 了,可以在用到的时候再去详细了解.我想只要大家理解了元 ...
- python多线程,多进程,线程池,进程池
https://blog.csdn.net/somezz/article/details/80963760 python 多线程 线程(Thread)也叫轻量级进程,是操作系统能够进行运算调度的最小单 ...
- Python基础第二十天:线程
操作系统线程理论 线程概念的引入背景 进程和线程的关系 线程的特点 使用线程的实际场景 用户级线程和内核级线程(了解) 线程和Python 理论知识 线程的创建Threading.Thread类 锁 ...
- Python的并发并行[1] - 线程[3] - 多线程的同步控制
多线程的控制方式 目录 唤醒单个线程等待 唤醒多个线程等待 条件函数等待 事件触发标志 函数延迟启动 设置线程障碍 1 唤醒单个线程等待 Condition类相当于一把高级的锁,可以进行一些复杂的线程 ...
- Python基础:进程、线程、协程(2)
进程与线程 什么是进程(process)? An executing instance of a program is called a process. Each process provides ...
最新文章
- 邓力、何晓冬深度解读:多模态智能未来的研究热点
- ArcGIS对AutoCAD操作的图文教程
- 我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...
- Java程序运行的内存分配
- 解决调用HttpContext类
- Elasticsearch之CURL命令的version控制
- insert 语句_CTF从入门到提升(七)insert 等数据表相关操作注入及例题分享
- css为什么要清除浮动
- c++ 错误: reference to local variable ‘...’ returned
- Asp.Net Core 中IdentityServer4 实战之 Claim详解
- 第一单元总结(汇编初探)
- css 30 常用选择选择器
- JeeWx 微信管家平台,简称“捷微”
- Linux中查看bz2压缩文件大小,Linux bz2文件解压与压缩之bzip2命令
- HTTP1.1 基础: 用C语言实现200行内的极简http server
- html模板怎样做seo,SEO如何做分享模板做外链
- 安利——程序猿必备笔记软件typora+坚果云
- pathon初学入门课
- N-Tiers设计系列(一):传统Asp运作方式
- 恒达高停车场信息管理系统的分析与设计
热门文章
- mysql级联是什么意思_MySql级联操作
- Mac | 使用 Wineskin 在 Mac 上运行 exe 程序
- rn react native PanResponder手势动画 实现窗口拖动 滑动动画 Animated
- java数组实现 多个数字求最大公约数
- 众筹php,PHP众筹网源码 众筹网源码
- 2012浙大计算机考研分数线,浙江大学历年考研分数线汇总[2012-2021]
- iOS字体大小适配机型的几种方法
- loadRunner通过谷歌浏览器代理录制脚本
- 什么是Linux内存管理中的RSS和VSZ
- Windows 11 配置Java 环境变量