在特定时间执行代码的更好方法?

Better way to execute code at a specific time?

我需要在准确的时间执行代码,例如10:00:00.000

while True:
    now = datetime.utcnow()

    if now.hour == 10 and now.minute == 0 and now.second == 0:
        #execute code here
    time.sleep(1)

到目前为止它似乎可以工作,但是如果我在启动前一小时启动代码,我觉得执行有延迟吗?

这是实现我想要的最好的方法吗?

只睡所需的总时间:

target_date = datetime(day=12, month=12, year=2021, hour=10)
time.sleep((target_date - datetime.now()).total_seconds())

使用 datetimethreading.Timer:

from datetime import datetime, time
from threading import Timer


def do_the_thing():
    print("execute code here")


Timer(
    (datetime.combine(
        datetime.today(), time(10, 0, 0)
    ) - datetime.now()).total_seconds(),
    do_the_thing
).start()

由于 Timer 在后台线程中运行,您的脚本可以立即继续执行其他操作,并且 do_the_thing 会在计时器一到就被调用。