在特定时间延迟任务

19 投票
8 回答
47804 浏览
提问于 2025-04-16 20:50

我想在一个Python脚本中让程序暂停一段时间,直到达到指定的时间。比如说,如果设置的时间是15:20,而当前时间是10:20,我该怎么计算需要暂停多少秒呢?我不太清楚怎么把15:20转换成时间,然后再从当前时间中减去,最后得到需要暂停的秒数。

8 个回答

5

你可以使用 pause 这个包(https://pypi.python.org/pypi/pause)。下面是他们文档中的一个例子 -

import pause, datetime
dt = datetime.datetime(2013, 6, 2, 14, 36, 34, 383752)
pause.until(dt)
14

如果你把一个 日期时间 对象减去另一个日期时间对象,你会得到一个 时间差 对象。这个时间差对象有一个叫做秒数的属性,所以你可以这样做:

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。

21

你可以试试下面的代码:

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))

撰写回答