我有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. Python 【第十三章】 Django 之 FORM
  3. 树莓派教程之树莓派系统镜像刷入和远程登陆(1)
  4. 关于ASP.Net的导入导出的[转]
  5. Vs2010删除空白行
  6. 这哥们到底是应聘的还是来收购公司的?| 今日趣图
  7. php 可编辑菜单,菜单的添加编辑
  8. 快捷键截屏_win7截图快捷键是什么 win7截图快捷键怎么按
  9. 【 数据结构(C语言)】线性表——链表反转
  10. (转) windows 下ORA-12514:TNS 监听问题
  11. python一切皆对象的理解
  12. 知道对方IP,你该这样入侵(附:如何隐藏IP地址)
  13. 香橙派 OrangPi PC 安装Lakka游戏系统及使用指南
  14. 安利一个自动求导网站
  15. 机器学习案例丨基于广泛和深入的推荐 - 餐厅评级预测
  16. Ubuntu鼠标延迟,闪烁,消失
  17. ICO 项目被一刀切后,是时候深入探索区块链技术的应用了
  18. minio安装部署及使用
  19. 网络安全需要掌握的知识有哪些?
  20. 鲲鹏服务器主板销售策略,市场伙伴优先:以行践言,华为鲲鹏做到了

热门文章

  1. Centos yum和pip下载离线安装包
  2. 边缘计算助力产业数字化转型
  3. 盘古开源:2022年全球汽车产能仍受制于芯片短缺,中国减产量占一成
  4. 宝塔面板专业版企业版教程 纯手动 带原版脚本 插件免费用
  5. python KMP算法查找子字符串
  6. 微信开放平台开源_开源需要开放徽章的3个原因
  7. takes 1 positional argument but 2 were given
  8. 弘辽科技:拼多多24小时不发货怎么办?如何发货?
  9. 第10章结构体01——结构体字节大小的计算
  10. mysql服务器存储视频文件,把视频文件直接存储到mysql数据库的方法