Python执行定时任务
python使用内置库和第三方库执行定时任务。
使用 sched 模块
sched相当于一个延时处理任务
schedule是简单明了的一个第三方定时任务库,需要先pip安装一下
一个很好的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | import schedule import time
 
  def job():     print("I'm working...")
  schedule.every(10).minutes.do(job)                schedule.every().hour.do(job)                     schedule.every().day.at("10:30").do(job)          schedule.every().monday.do(job)                   schedule.every().wednesday.at("13:15").do(job)    schedule.every().minute.at(":17").do(job)        
  while True:     schedule.run_pending()        time.sleep(1)
   | 
 
传递参数
1 2 3 4 5 6 7 8 9 10 11 12 13
   | import schedule import time
 
  def job(msg):     print("I'm working...")     print('接受参数为:{}'.format(msg))
  schedule.every(10).seconds.do(job,msg='10s')
  while True:     schedule.run_pending()        time.sleep(1)
   | 
 
执行并发任务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   | import schedule,time def job1(msg):     time.sleep(1)     print('任务1接受参数为:{}'.format(msg)) def job2(msg):     time.sleep(2)     print('任务2接受参数为:{}'.format(msg)) def job3(msg):     time.sleep(3)     print('任务3接受参数为:{}'.format(msg)) schedule.every(1).seconds.do(job1,msg='任务1') schedule.every(3).seconds.do(job2,msg='任务2') schedule.every(1).seconds.do(job3,msg='任务3') while 1:     schedule.run_pending()
   | 
 
实际上应该是顺序执行

加入使用threading完成并发

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
   |  import schedule,time import threading
  def job1(msg):     time.sleep(1)     print('任务1接受参数为:{}'.format(msg)) def job2(msg):     time.sleep(2)     print('任务2接受参数为:{}'.format(msg)) def job3(msg):     time.sleep(3)     print('任务3接受参数为:{}'.format(msg)) def ensure_schedule_1():     threading.Thread(target=job1,args=(1,)).start() def ensure_schedule_2():     threading.Thread(target=job2,args=(2,)).start() def ensure_schedule_3():     threading.Thread(target=job3,args=(3,)).start() def run():     schedule.every(1).seconds.do(ensure_schedule_1)     schedule.every(1).seconds.do(ensure_schedule_2)     schedule.every(1).seconds.do(ensure_schedule_3)     while 1:         schedule.run_pending() run()
 
  |