python脚本

python定时任务
1.time.sleep(n)
循环执行,使用sleep阻塞n秒,缺点是sleep是个阻塞函数,会阻塞进程。

import datetime
import time
def dosomething():
    while True:
        print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
        time.sleep(10)

dosomething()
print('end')

运行结果:

2.Timer(n, func)
使用threading的Timer实现定时任务,Timer是非阻塞的。

import datetime
from threading import Timer
def dosomething():
        print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
        Timer(10, dosomething).start()
dosomething()
print('end')

运行结果:

3.sched调度器
shced模块是标准库定义的,它是一个调度器(延时处理禁止),将任务事件加入调度队列,调度器就会顺序执行

import datetime
import time
import sched

def dosomething():
        print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
        schedule.enter(10, 1, dosomething, ())

# 生成调度器(两个参数比较复杂,暂不考虑含义)
schedule = sched.scheduler(time.time, time.sleep)
# 加入调度事件(间隔10秒执行,多个事件同时到达时优先级,触发的函数,函数参数)
schedule.enter(10, 1, dosomething, ())
# 运行
schedule.run()

print('end')

运行结果:

4.定时框架APScheduler(Advanced Python Scheduler)
APScheduler是一个第三方库,使用很方便,支持间隔时间执行,固定时间执行,某个日期执行一次三种类型。

import datetime
from apscheduler.schedulers.blocking import BlockingScheduler

def dosomething():
        print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

scheduler = BlockingScheduler()
scheduler.add_job(dosomething, 'interval', seconds=10)
scheduler.start()
print('end')

运行结果:

5.windows定时任务
可以使用pyinstaller将python程序打包成exe文件,然后添加到windows的定时任务。

6.Linux定时任务
可以使用Crontab定时运行python脚本。

posted on 2017-09-22 11:15  迪米特  阅读(197)  评论(0编辑  收藏  举报

导航