在特定时间执行代码的更好方法?
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())
使用 datetime
和 threading.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
会在计时器一到就被调用。
我需要在准确的时间执行代码,例如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())
使用 datetime
和 threading.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
会在计时器一到就被调用。