解决Python中定时任务线程无法自动退出的问题

本文介绍了在Python中遇到定时任务线程无法自动退出的问题及其解决方法。使用Timer类创建定时任务时,若要重复执行,直接调用可能导致主线程退出后子线程无法停止。通过设置全局变量和利用类的析构函数,可以在主线程结束时通知子线程退出,实现优雅的线程管理。
摘要由CSDN通过智能技术生成

今天小编就为大家分享一篇解决Python中定时任务线程无法自动退出的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
python的线程有一个类叫Timer可以,用来创建定时任务,但是它的问题是只能运行一次,如果要重复执行,则只能在任务中再调用一次timer,但这样就存在新的问题了,就是在主进程退出后,不能正常退出子线程。

from threading import Timer
  
  
def scheduletaskwrap():
 pritn "in task"
 Timer(10, scheduletaskwrap).start()
  
Timer(10, scheduletaskwrap).start()

象上面这样,就可以每10秒调用一次线程,但是当你退出整个程序后,

scheduletaskwrap

还在继续执行,要通知它退出怎么办?

python的线程模块提供了很多办法,什么event,wait,lock等,这些都比较麻烦不适合这种定时任务的简单方法。

最简单的就是设置一个全局变量,然后在线程中判断它是否改变。

from threading import Timer
gflag=1
  
def scheduletaskwrap():
 global gflag
 pritn "in task"
 if gflag==1:
  Timer(10, scheduletaskwrap).start()
  
Timer(10, scheduletaskwrap).start()

想象是美好的,你实际运行就会发现,这样行不通,因为主进程退出后,那个全局变量࿰

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值