多任务 schedule python_python的定时任务模块--schedule

首先先安装一下模块下面我们简单的学习一下schedule模块先简单的看个示例import scheduledef test(*args,**kwargs):print("hello world 1",datetime.d

首先先安装一下模块

下面我们简单的学习一下schedule模块

先简单的看个示例

import schedule

def test(*args,**kwargs):

print("hello world 1",datetime.datetime.now())

schedule.every(1).minute.do(test)

while True:

schedule.run_pending()

结果如下,我们可以看到,每隔一分钟执行了一次test这函数

然后我们在看下一个例子

import schedule

import time

def test1(*args,**kwargs):

print("这是test1的函数")

time.sleep(5)

print("这是test1的函数",datetime.datetime.now())

def test2(*args,**kwargs):

print("这是test2的函数")

time.sleep(5)

print("这是test2的函数",datetime.datetime.now())

schedule.every(10).seconds.do(test1)

schedule.every(10).seconds.do(test2)

while True:

schedule.run_pending()

结果如下

这是test2的函数

这是test2的函数 2019-02-11 09:33:55.615493

这是test1的函数

这是test1的函数 2019-02-11 09:34:00.623102

这是test2的函数

这是test2的函数 2019-02-11 09:34:10.638319

这是test1的函数

这是test1的函数 2019-02-11 09:34:15.645928

这是test2的函数

这是test2的函数 2019-02-11 09:34:25.661146

这是test1的函数

这是test1的函数 2019-02-11 09:34:30.668755

这是test2的函数

这是test2的函数 2019-02-11 09:34:40.683972

这是test1的函数

这是test1的函数 2019-02-11 09:34:45.691581

这是test2的函数

这是test2的函数 2019-02-11 09:34:55.706799

这是test1的函数

这是test1的函数 2019-02-11 09:35:00.714407

这是test2的函数

这是test2的函数 2019-02-11 09:35:10.729625

这是test1的函数

这是test1的函数 2019-02-11 09:35:15.737234

这是test2的函数

这是test2的函数 2019-02-11 09:35:25.752451

这是test1的函数

这是test1的函数 2019-02-11 09:35:30.760060

这是test2的函数

这是test2的函数 2019-02-11 09:35:40.775278

这是test1的函数

从结果我们可以很清晰的看到,执行test1和test2两个函数,不是每隔10s执行一次,而是每隔15s执行一次,所以我们可以理解,schedule模块如果去同时执行多个函数的话,这些不同的函数不是开启多线程并行执行的,而是串行执行的,为了解决这个问题,我们可以用到python的多线程模块来解决这个问题

下面我们就通过多线程模块来解决这个问题

import schedule

import threading

import time

def test1(*args,**kwargs):

print("这是test1的函数")

time.sleep(5)

print("这是test1的函数",datetime.datetime.now())

def test2(*args,**kwargs):

print("这是test2的函数")

time.sleep(5)

print("这是test2的函数",datetime.datetime.now())

def sch_test1():

threading.Thread(target=test1).start()

def sch_test2():

threading.Thread(target=test2).start()

schedule.every(10).seconds.do(sch_test1)

schedule.every(10).seconds.do(sch_test2)

while True:

schedule.run_pending()

结果如下

这是test1的函数

这是test2的函数

这是test2的函数 2019-02-11 09:42:03.022749

这是test1的函数 2019-02-11 09:42:03.022749

这是test2的函数

这是test1的函数

这是test2的函数 2019-02-11 09:42:13.037967

这是test1的函数 2019-02-11 09:42:13.053567

这是test1的函数

这是test2的函数

这是test2的函数 2019-02-11 09:42:23.053184

这是test1的函数 2019-02-11 09:42:23.068784

这是test1的函数

这是test2的函数

这是test2的函数 2019-02-11 09:42:33.068402

这是test1的函数 2019-02-11 09:42:33.068402

这是test1的函数

这是test2的函数

这是test1的函数 2019-02-11 09:42:43.083620

这是test2的函数 2019-02-11 09:42:43.083620

这是test2的函数

这是test1的函数

这是test2的函数 2019-02-11 09:42:53.098837

这是test1的函数 2019-02-11 09:42:53.114437

这是test2的函数

这是test1的函数

这是test1的函数 2019-02-11 09:43:03.114055

这是test2的函数 2019-02-11 09:43:03.114055

这是test1的函数

这是test2的函数

这是test2的函数 2019-02-11 09:43:13.129272

这是test1的函数 2019-02-11 09:43:13.160472

这是test1的函数

这是test2的函数

这是test1的函数 2019-02-11 09:43:23.144490

这是test2的函数 2019-02-11 09:43:23.144490

从上面的结果我们可以看到,2个函数之间没有干扰了,每隔10s后分别执行了2个函数

发布者:admin,转转请注明出处:http://www.yc00.com/web/1755000911a5225510.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信