将任务延迟到特定时间

新手上路,请多包涵

我想在 python 脚本中做的是休眠几秒钟,直到达到所需的时间。 IE:如果 runAt 设置为 15:20,当前时间为 10:20,我如何计算睡眠多少秒?我不确定如何将 15:20 转换为时间和当前日期,然后减去实际时间以获得秒数。

原文由 Martlark 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 735
2 个回答

认为您还可以使用以下代码:

 from datetime import datetime, time
from time import sleep

def act(x):
    return x+10

def wait_start(runTime, action):
    startTime = time(*(map(int, runTime.split(':'))))
    while startTime > datetime.today().time(): # you can add here any additional variable to break loop if necessary
        sleep(1)# you can change 1 sec interval to any other
    return action

wait_start('15:20', lambda: act(100))

原文由 Artsiom Rudzenka 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果将一个 日期 时间对象从另一个对象中减去,则会得到一个 timedelta 对象,该对象具有 seconds 属性,因此您可以执行以下操作:

 t1 = datetime.datetime.now()

# other stuff here
t2 = datetime.datetime.now()
delta = t2 - t1
if delta.seconds > WAIT:
    # do stuff
else:
    # sleep for a bit

顺便说一句,您可能希望将 cron 用于应该在特定时间运行的任务。

原文由 Mikesname 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题