设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 14082|回复: 3
打印 上一主题 下一主题

Python延时线程怎么提前关闭?

[复制链接]

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2019-1-21 15:04:01 |只看该作者 |倒序浏览
在运行Tkinter窗口界面时,想在特定某些时间点向其文本框传输特定内容,于是采用了延时线程来操作:
  1. for t in timeTable:
  2.     timethread = threading.Timer(t,sendtext)
  3.     timethread.start()
复制代码
假设我的timeTable是[10,150,200],也就是运行完这个for,就开启了10、50和200秒后的延时线程,那么这些线程怎么来提前终止呢?


回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2019-1-21 22:32:07 |只看该作者
提前终止?什么意思,正常执行完了就可以了啊,你的意思是遇到某个情况不想执行了,要结束掉吗?那你应该把线程记录下来,放在某个变量里
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

板凳
发表于 2019-1-22 10:00:42 |只看该作者
crossin先生 发表于 2019-1-21 22:32
提前终止?什么意思,正常执行完了就可以了啊,你的意思是遇到某个情况不想执行了,要结束掉吗?那你应该把 ...

问题背景:主线程用来控制tkinter的图形界面,多线程用来根据时间延时向界面传递文本信息,当我关闭主线程界面时,由于延时线程也启动了,会有个报错。

刚才了解到setDaemon(True)  设置线程为后台线程的概念,现在我的解决方案是在线程start()前添加timethread.setDaemon(True)了,倒是消除了报错了,就是不知道是不是规范
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2019-1-22 23:08:11 |只看该作者
TED 发表于 2019-1-22 10:00
问题背景:主线程用来控制tkinter的图形界面,多线程用来根据时间延时向界面传递文本信息,当我关闭主线 ...

我觉得你可以尝试验证一下,比如子线程定时写入文件。然后你用这个方法关闭后,看看子线程还是否在运行
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-22 03:35 , Processed in 0.023401 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部