Python中threading.Timer()定时器实现定时任务
目录
- 1、单线程执行
- 2、多线程执行
timer最基本理解就是定时器,可以启动多个定时任务,这些定时器任务是异步执行,所以不存在等待顺序执行问题。
Timer方法 | 说明 |
---|---|
Timer(interval, function, args=None, kwargs=None) | 创建定时器 |
cancel() | 取消定时器 |
start() | 使用线程方式执行 |
join(self, timeout=None) | 等待线程执行结束 |
1、单线程执行
示例代码:
from datetime import datetime from threading import Timer def task(): now = datetime.now() ts = now.strftime("%Y-%m-%d %H:%M:%S") print(ts) def func(): task() t = Timer(3, func) t.start() func()
运行结果:
优缺点:可以实现异步任务,是非阻塞的,但当运行次数过多时,会出现报错:Pyinstaller maximum recursion depth exceeded Error Resolution 达到最大递归深度,然后想到的是修改最大递归深度,
sys.setrecursionlimit(100000000)
但是运行到达到最大CPU时,python会直接销毁程序。
2、多线程执行
示例代码:
from datetime import datetime from threading import Timer import threading def task(): now = datetime.now() ts = now.strftime("%Y-%m-%d %H:%M:%S") print(ts) def func(): task() t = Timer(3, func) t.start() if __name__ == '__main__': for i in range(3): thread = threading.Thread(None, func) thread.start()
运行结果:
到此这篇关于Python中threading.Timer()定时器实现定时任务的文章就介绍到这了,更多相关threading.Timer()定时器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
详解Python的多线程定时器threading.Timer
threading.Timer 一次timer只生效一次,不会反复循环,如果实现循环触发,代码如下: import time import threading def createTimer(): t = threading.Timer(2, repeat) t.start() def repeat(): print('Now:', time.strftime('%H:%M:%S',time.localtime())) createTimer() createTimer() 这段代码的功能就是每
-
python中threading超线程用法实例分析
本文实例讲述了python中threading超线程用法.分享给大家供大家参考.具体分析如下: threading基于Java的线程模型设计.锁(Lock)和条件变量(Condition)在Java中是对象的基本行为(每一个对象都自带了锁和条件变量),而在Python中则是独立的对象.Python Thread提供了Java Thread的行为的子集:没有优先级.线程组,线程也不能被停止.暂停.恢复.中断.Java Thread中的部分被Python实现了的静态方法在threading中以模块方
-
Python中Threading用法详解
Python的threading模块松散地基于Java的threading模块.但现在线程没有优先级,没有线程组,不能被销毁.停止.暂停.开始和打断. Java Thread类的静态方法,被移植成了模块方法. main thread: 运行python程序的线程 daemon thread 守护线程,如果守护线程之外的线程都结束了.守护线程也会结束,并强行终止整个程序.不要在守护进程中进行资源相关操作.会导致资源不能正确的释放.在非守护进程中使用Event. Thread 类 (group=No
-
Python中threading模块join函数用法实例分析
本文实例讲述了Python中threading模块join函数用法.分享给大家供大家参考.具体分析如下: join的作用是众所周知的,阻塞进程直到线程执行完毕.通用的做法是我们启动一批线程,最后join这些线程结束,例如: for i in range(10): t = ThreadTest(i) thread_arr.append(t) for i in range(10): thread_arr[i].start() for i in range(10): thread_arr[i].joi
-
浅谈Python中threading join和setDaemon用法及区别说明
Python多线程编程时,经常会用到join()和setDaemon()方法,今天特地研究了一下两者的区别. 1.join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用线程的join方法. 原型:join([timeout]) 里面的参数时可选的,代表线程运行的最大时间,即如果超过这个时间,不管这个此线程有没有执行完毕都会被回收,然后主线程或函数都会接
-
python中threading开启关闭线程操作
在python中启动和关闭线程: 首先导入threading import threading 然后定义一个方法 def serial_read(): ... ... 然后定义线程,target指向要执行的方法 myThread = threading.Thread(target=serial_read) 启动它 myThread.start() 二.停止线程 不多说了直接上代码 import inspect import ctypes def _async_raise(tid, exctype
-
python中threading和queue库实现多线程编程
摘要 本文主要介绍了利用python的 threading和queue库实现多线程编程,并封装为一个类,方便读者嵌入自己的业务逻辑.最后以机器学习的一个超参数选择为例进行演示. 多线程实现逻辑封装 实例化该类后,在.object_func函数中加入自己的业务逻辑,再调用.run方法即可. # -*- coding: utf-8 -*- # @Time : 2021/2/4 14:36 # @Author : CyrusMay WJ # @FileName: run.py # @Software:
-
Python中threading库实现线程锁与释放锁
控制资源访问 前文提到threading库在多线程时,对同一资源的访问容易导致破坏与丢失数据.为了保证安全的访问一个资源对象,我们需要创建锁. 示例如下: import threading import time class AddThread(): def __init__(self, start=0): self.lock = threading.Lock() self.value = start def increment(self): print("Wait Lock") se
-
举例详解Python中threading模块的几个常用方法
threading.Thread Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有两种方式来创建线程:一种是通过继承Thread类,重写它的run方法:另一种是创建一个threading.Thread对象,在它的初始化函数(__init__)中将可调用对象作为参数传入.下面分别举例说明.先来看看通过继承threading.Thread类来创建线程的例子: #coding=gbk import threading, time, random count = 0 cl
-
详解Python中的多线程编程
一.简介 多线程编程技术可以实现代码并行性,优化处理能力,同时功能的更小划分可以使代码的可重用性更好.Python中threading和Queue模块可以用来实现多线程编程. 二.详解 1.线程和进程 进程(有时被称为重量级进程)是程序的一次执行.每个进程都有自己的地址空间.内存.数据栈以及其它记录其运行轨迹的辅助数据.操作系统管理在其上运行的所有进程,并为这些进程公平地分配时间.进程也可以通过fork和spawn操作来完成其它的任务,不过各个进程有自己的内存空间.数据栈等,所以只
-
Python中join函数简单代码示例
本文简述的是string.join(words[, sep]),它的功能是把字符串或者列表,元组等的元素给拼接起来,返回一个字符串,和split()函数与正好相反,看下面的代码理解. 首先展示下结果吧! 代码分享: a=["豫","N","C8","C89"] b=("豫","N","C8","C89") c="zhang" a
随机推荐
- dubbo的配置文件详解(推荐)
- javascript图像处理—仿射变换深度理解
- 在Mac OS下搭建LNMP开发环境的步骤详解
- 解析php多线程下载远程多个文件
- python的绘图工具matplotlib使用实例
- android开机自启动原理与实现案例(附源码)
- android利用ContentResolver访问者获取手机联系人信息
- 网站被黑的假象--ARP欺骗之页面中加入一段js
- java使用des加密解密示例分享
- 微信小程序的分类页面制作
- C# L型棋牌覆盖实现代码与效果
- SQL2005 ROW_NUMER实现分页的两种常用方式
- 使用BootStrap和Metroui设计的metro风格微网站或手机app界面
- Android TimePicker 直接输入的问题解决方案
- 解决IE6的PNG透明JS插件使用介绍
- asp实现WEB打印代码大全
- C++中vector容器的常用操作方法实例总结
- PHP编程获取各个时间段具体时间的方法
- pw的一个放后门的方法分析
- 总结C语言中const关键字的使用
其他
- HTML中制作时间包括年月日星期时分秒源代码
- Nginx部署前后端分离服务以及配置说明
- Python编写函数输出三角形图案
- vue中a标签在生成环境下无法跳转
- jupyter撤销操作
- windows 下执行jar 重启
- vue input被键盘遮挡
- 易语言如何读配置文件时弹出DOS界面
- ubuntu 20.04静态ip nat
- vue-content-loader 报错
- 拖拽选区 js 手机
- python appium使用教程
- golang redis lua Script打印
- idea 从service 点金跳转不进去
- .net core 获取数据库链接地址
- C# HttpClient 發郵件附帶附件
- element ui 中Notification添加按钮
- vue怎么向后端发送带参数的请求
- AC filter工作原理
- 事务方法异常被catch住,事务不生效