python通用问题收集

python3.X 使用schedule实现定时任务

2020-03-04  本文已影响0人  zhangtaishan1
1.安装schedule,安装命令如下:

pip install schedule

2.以下为普通简单的例子:
import schedule
import time
 
def job():
    print("I'm working...")
 
# 每隔5分钟执行一次任务
schedule.every(5).minutes.do(job)
# 每隔一小时执行一次任务
schedule.every().hour.do(job)
# 每天的10:30执行一次任务
schedule.every().day.at("10:30").do(job)
# 每5-10分钟执行一次任务
schedule.every(5).to(10).minutes.do(job)
# 每周一的这个时候执行一次任务
schedule.every().monday.do(job)
# 每周三的13:30执行一次任务
schedule.every().wednesday.at("13:30").do(job)
# 每分钟的这个时刻执行一次任务
schedule.every().minute.at(":17").do(job)
# 如果job函数有有参数时,这么写
schedule.every(10).seconds.do(job,"参数") 

while True:
    # 启动服务
    run_pending() 
   #运行所有可以运行的任务
    schedule.run_pending()
    time.sleep(1)

3.schedule是串行执行,如果时间重叠就会有重叠现象,但可以用多线程实现
import schedule
import time
import threading

def job():
    print("I'm working... in job1  start")
    time.sleep(15)
    print("I'm working... in job1  end")

def job2():
    print("I'm working... in job2")

def run_threaded(job_func):
     job_thread = threading.Thread(target=job_func)
     job_thread.start()
       #threading.Thread(target=loop,args=(i,loops[i]))

 schedule.every(10).seconds.do(run_threaded,job)
 schedule.every(10).seconds.do(run_threaded,job2)


while True:
    schedule.run_pending()
    time.sleep(1)
4.如果想要对线程的数量有所控制,则可以采用如下方法:
import Queue
import time
import threading
import schedule


def job():
    print("I'm working")


def worker_main():
    while 1:
        job_func = jobqueue.get()
        job_func()

jobqueue = Queue.Queue()

schedule.every(10).seconds.do(jobqueue.put, job)
schedule.every(10).seconds.do(jobqueue.put, job)
schedule.every(10).seconds.do(jobqueue.put, job)
schedule.every(10).seconds.do(jobqueue.put, job)
schedule.every(10).seconds.do(jobqueue.put, job)

worker_thread = threading.Thread(target=worker_main)
worker_thread.start()

while 1:
    schedule.run_pending()
    time.sleep(1)
上一篇下一篇

猜你喜欢

热点阅读