IIUC:这是一个简单的解决方案,您可以使用包中的threading.Timer
函数,该函数threading
启动一个线程,该线程在指定的时间间隔过后执行一个函数。你可以使用这个:
from threading import Timer
from datetime import datetime, date
from time import sleep
def task_a():
sleep(5) #--> perform some work
print("Task A, completed at:", datetime.today().time())
def task_b():
sleep(10) #--> perform some work
print("Task B, completed at", datetime.today().time())
def task_c():
sleep(20) #--> perform some work
print("Task C, completed at", datetime.today().time())
now = datetime.today().time()
taska_start = datetime.strptime("10:00:00", "%H:%M:%S").time()
taskb_start = datetime.strptime("12:00:00", "%H:%M:%S").time()
taskc_start = datetime.strptime("16:20:07", "%H:%M:%S").time()
tasks = [(taska_start, task_a), (taskb_start, task_b), (taskc_start, task_c)]
for task_start, task in tasks:
if datetime.combine(date.min, task_start) > datetime.combine(date.min, now):
diff = datetime.combine(date.min, task_start) > datetime.combine(date.min, now)
t = Timer(diff.seconds, task)
t.start()
例如,
如果当前时间12:00:00
和假设task_a
计划在 运行13:00:00
,task_b
计划在 运行,13:30:00
并task_c
计划在 14:00:00
.. 运行。然后执行脚本task_a
后将在60
几秒task_b
后运行,将在 之后运行90
,task_c
并将在120
从当前时间开始的几秒后运行。
样本结果:
Task A, completed at: 13:00:05
Task B, completed at: 13:30:10
Task C, completed at: 14:00:20