gpt4 book ai didi

python - 以时间间隔连续安排脚本

转载 作者:行者123 更新时间:2023-12-01 07:41:22 28 4
gpt4 key购买 nike

我正在尝试创建一个根据时间触发多个脚本的调度程序。例如,我有脚本 A、B 和 C,我想触发 A-每 1 分钟一次,B-每 2 分钟一次,C-每 3 分钟一次。现在,我只是想把它们打印在屏幕上。

我已经从 Python 获得了 Sched 模块并尝试使用它。不幸的是,触发器无法按预期工作。修改后,它要么连续工作但不触发正确的脚本,要么仅触发所有三个脚本一次并退出流程。

仅触发一次的代码:

import sched, time
from datetime import datetime

s = sched.scheduler(time.time, time.sleep)
def print_time(a='default'):
print("From print_time", datetime.now().strftime("%H%M%S"), a)

def print_some_times():
print("Start time :"+datetime.now().strftime("%H%M%S"))
s.enter(18, 1, print_time, kwargs={'a': '3 Minutes Trigger'})
s.enter(12, 1, print_time, kwargs={'a': '2 Minutes Trigger'})
s.enter(6, 1, print_time, kwargs={'a': '1 Minute Trigger'})
s.enter(6, 1, print_time, kwargs={'a': '1 Minute Trigger'})
s.run()
print("End time :"+datetime.now().strftime("%H%M%S"))

print_some_times()

连续但不正确触发的代码:

import sched, time
from datetime import datetime

s = sched.scheduler(time.time, time.sleep)
def print_time(a='default'):
s.enter(5, 1, print_time, ())
print("From print_time "+datetime.now().strftime("%H%M%S")+a)

def print_some_times():
print("Start time :"+datetime.now().strftime("%H%M%S"))
s.enter(18, 1, print_time, kwargs={'a': ' 3 Minutes Trigger'})
s.enter(12, 1, print_time, kwargs={'a': ' 2 Minutes Trigger'})
s.enter(6, 1, print_time, kwargs={'a': ' 1 Minute Trigger'})
s.enter(6, 1, print_time, kwargs={'a': ' 1 Minute Trigger'})
s.run()
print("End time :"+datetime.now().strftime("%H%M%S"))

print_some_times()

注意:我已经删除了输入时间值中的 0,这样我们就不必等待很长时间才能输出。

第一个代码的实际结果:
开始时间:163945
从 print_time 163951 1 分钟触发
从 print_time 163951 1 分钟触发
从 print_time 163957 2 分钟触发
从 print_time 164003 3 分钟触发
结束时间:164003

预期输出:
1 分钟触发器应每隔一分钟触发一次
2 分钟触发器应每两分钟触发一次,依此类推。

最佳答案

sched 模块不是为此设计的。

您可以尝试使用this schedule library相反。

使用python3 -m pip install Schedule安装它

import schedule
import time
from datetime import datetime


def print_time(a='default'):
print("From print_time " + datetime.now().strftime("%H%M%S") + a)


def print_some_times():
print("Start time :" + datetime.now().strftime("%H%M%S"))
schedule.every(3).minutes.do(print_time, a=' 3 Minutes Trigger')
schedule.every(2).minutes.do(print_time, a=' 2 Minutes Trigger')
schedule.every(1).minutes.do(print_time, a=' 1 Minute Trigger')
schedule.every(1).minutes.do(print_time, a=' 1 Minute Trigger')
print("End time :" + datetime.now().strftime("%H%M%S"))


print_some_times()

while 1:
schedule.run_pending()
time.sleep(1)

关于python - 以时间间隔连续安排脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56689619/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com