python线程自动停止了(解决Python中定时任务线程无法自动退出的问题)
类别:脚本大全 浏览量:2669
时间:2022-03-28 16:58:13 python线程自动停止了
解决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() |
想象是美好的,你实际运行就会发现,这样行不通,因为主进程退出后,那个全局变量,在子线程中还是1,没有改变,因为python不存在什么退出通知之类的机制。
那没有其他办法了吗?经过思考,既然进程没有退出通知,但是类可以啊,类一般都有析构函数,可以用它来实现全局变量的改变,于是添加了一个类,在析构函数中把全局变量改成0,这样就可以了。
|
class timerexec(): threadhandle = 0 def __init__( self ,thandle): threadhandle = thandle def __del__( self ): global gflag gflag = 0 print u "线程结束" ,gflag threadhandle.cancel |
|
refreshthread = Timer( 10 , scheduletaskwrap).start() a = timerexec(refreshthread) |
主进程中调用timer的地方也要添加创建类的代码。
这样就可以了。
以上这篇解决Python中定时任务线程无法自动退出的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/hhgood/article/details/80013871
您可能感兴趣
- python默认缩进设置(不归路系列:Python入门之旅-一定要注意缩进!!!推荐)
- python中统计文本中单词数的代码(Linux上使用Python统计每天的键盘输入次数)
- python datetime模块是什么(Python中时间datetime的处理与转换用法总结)
- python定时任务详解(使用Python做定时任务及时了解互联网动态)
- python实现最简单的游戏(20行python代码的入门级小游戏的详解)
- python 的常用工具(Python静态类型检查新工具之pyright 使用指南)
- 怎么用python获取目录(python 获得任意路径下的文件及其根目录的方法)
- python编写一个名片(详解Python做一个名片管理系统)
- python3.7不兼容pywinauto(浅谈python编译pyc工程--导包问题解决)
- python蓝牙knn算法(python使用KNN算法识别手写数字)
- python常用的字符串操作方法(Python字符串的常见操作实例小结)
- python中怎么查看函数的用法(Python中函数的基本定义与调用及内置函数详解)
- python画佩奇(啥是佩奇?使用Python自动绘画小猪佩奇的代码实例)
- 12步轻松搞定python装饰器(Python3.5装饰器典型案例分析)
- python接口自动化接口依赖(python接口自动化十六--参数关联接口后传详解)
- python socket 库(Pythony运维入门之Socket网络编程详解)
- 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜(2019年外媒秋季新番动画角色CP排行榜)
- 新一小兰领衔 盘点动漫中的那些 远距离恋爱情侣(盘点动漫中的那些)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
- 九儿《狐踪谍影》出演热血女特警,戏份杀青受关注(九儿狐踪谍影出演热血女特警)
热门推荐
- laravel权限控制(laravel-admin 在列表页添加自定义按钮的例子)
- nginx配置两个前端web服务(你真的了解如何将Nginx配置为Web服务器吗)
- javascript中的this判定(Javascript中函数分类&this指向的实例详解)
- SQL Server遍历表中记录的方法
- dedecms如何做弹窗(dedecms实现将表单订单发送到邮箱实例代码)
- pandas删除存在空值的列(详解pandas.DataFrame中删除包涵特定字符串所在的行)
- laravel框架保存数据(Laravel 数据库加密及数据库表前缀配置方法)
- linux查python进程(linux查找当前python解释器的位置方法)
- dedecms搜索功能怎么设置详细(DEDECMS自定义联动类别调用及修改方法)
- js回调函数原理(关于JavaScript回调函数的深入理解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9