threading.Timer
import datetime,threading
def aa(v, a, b):
print(v,a,b)
timer=threading.Timer(interval=2,function=aa,args=(2,),kwargs={'a':'22222','b':'3333333333'})
timer.start()
timer=threading.Timer(interval=4, function=aa, args=(2,), kwargs={'a': '22222', 'b': '33333333333'})
timer.run()
threading.Event().wait(2)
print(1111111111)
timer.cancel()
print('after cancel')
while True:
threading.Event().wait(2)
print(threading.enumerate())
由于run()方法没有开启多线程,顺序执行,因此cancel(),必须放在run()之前
import threading
def v(a):
a+=1
print(a)
print('threads {} {}'.format(threading.enumerate(),threading.active_count()))
if a>5:
return
t=threading.Timer(interval=2,function=v,args=(a,))
t.start()
return a
print(v(0),'iuop')
cronie定时任务
import threading,datetime
def v(a,b,c):
print(a,b,c)
#继续调用自身
t=threading.Timer(interval=2,function=v,args=(22,),kwargs={'b':33,'c':44})
t.start()
#当前时间
today=datetime.datetime.now()
#tomorrow
tomorrow= today + datetime.timedelta(days=+1)
#tomorrow.year,tomorrow.month,tomorrow.day均是int,next_time构造为下次定点执行时刻
next_time=datetime.datetime.strptime('{}-{}-{} 3:00:00'.format(tomorrow.year,tomorrow.month,tomorrow.day),'%Y-%m-%d %H:%M:%S')
#当前据下次执行时间
interval=(next_time-today).total_seconds()
print(interval)
threading.Timer(interval=interval,function=v,args=(22,),kwargs={'b':33333333,'c':44444444444}).start()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律