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()
复制代码

 

posted @   ascertain  阅读(385)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示