我有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()相关推荐

  1. python 在主线程开线程_Python开启线程,在函数中开线程的实例

    逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...

  2. python关闭线程根据id_python之线程相关操作

    1.线程: 一个进程可以有多个线程,共享一个进程的资源: 2.进程线程的区别: 进程是资源分配的最小单位,线程是程序执行的最小单位 3.python中线程模块threading, 提供的类: Thre ...

  3. Python模块整理(四):线程模块threading

    参考网络以及python书籍整理 一.Python threading三种调用方式介绍: Thread 是threading模块中最重要的类之一,可以使用它来创建线程. 第一种方式:创建一个threa ...

  4. python 子线程返回值_python-从线程返回值

    python-从线程返回值 我如何获得一个线程以将元组或我选择的任何值返回给Python中的父级? 12个解决方案 59 votes 我建议您在启动线程之前实例化Queue.Queue,并将其作为线程 ...

  5. Python | 面试必问,线程与进程的区别,Python中如何创建多线程?

    其实关于元类还有很多种用法,比如说如何在元类当中设置参数啦,以及一些规约的用法等等.只不过这些用法比较小众,使用频率非常低,所以我们 不过多阐述 了,可以在用到的时候再去详细了解.我想只要大家理解了元 ...

  6. python多线程,多进程,线程池,进程池

    https://blog.csdn.net/somezz/article/details/80963760 python 多线程 线程(Thread)也叫轻量级进程,是操作系统能够进行运算调度的最小单 ...

  7. Python基础第二十天:线程

    操作系统线程理论 线程概念的引入背景 进程和线程的关系 线程的特点 使用线程的实际场景 用户级线程和内核级线程(了解) 线程和Python 理论知识 线程的创建Threading.Thread类 锁 ...

  8. Python的并发并行[1] - 线程[3] - 多线程的同步控制

    多线程的控制方式 目录 唤醒单个线程等待 唤醒多个线程等待 条件函数等待 事件触发标志 函数延迟启动 设置线程障碍 1 唤醒单个线程等待 Condition类相当于一把高级的锁,可以进行一些复杂的线程 ...

  9. Python基础:进程、线程、协程(2)

    进程与线程 什么是进程(process)? An executing instance of a program is called a process. Each process provides ...

最新文章

  1. 邓力、何晓冬深度解读:多模态智能未来的研究热点
  2. ArcGIS对AutoCAD操作的图文教程
  3. 我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...
  4. Java程序运行的内存分配
  5. 解决调用HttpContext类
  6. Elasticsearch之CURL命令的version控制
  7. insert 语句_CTF从入门到提升(七)insert 等数据表相关操作注入及例题分享
  8. css为什么要清除浮动
  9. c++ 错误: reference to local variable ‘...’ returned
  10. Asp.Net Core 中IdentityServer4 实战之 Claim详解
  11. 第一单元总结(汇编初探)
  12. css 30 常用选择选择器
  13. JeeWx 微信管家平台,简称“捷微”
  14. Linux中查看bz2压缩文件大小,Linux bz2文件解压与压缩之bzip2命令
  15. HTTP1.1 基础: 用C语言实现200行内的极简http server
  16. html模板怎样做seo,SEO如何做分享模板做外链
  17. 安利——程序猿必备笔记软件typora+坚果云
  18. pathon初学入门课
  19. N-Tiers设计系列(一):传统Asp运作方式
  20. 恒达高停车场信息管理系统的分析与设计

热门文章

  1. mysql级联是什么意思_MySql级联操作
  2. Mac | 使用 Wineskin 在 Mac 上运行 exe 程序
  3. rn react native PanResponder手势动画 实现窗口拖动 滑动动画 Animated
  4. java数组实现 多个数字求最大公约数
  5. 众筹php,PHP众筹网源码 众筹网源码
  6. 2012浙大计算机考研分数线,浙江大学历年考研分数线汇总[2012-2021]
  7. iOS字体大小适配机型的几种方法
  8. loadRunner通过谷歌浏览器代理录制脚本
  9. 什么是Linux内存管理中的RSS和VSZ
  10. Windows 11 配置Java 环境变量