在Python中,如何让线程休眠到特定时间?

2024-05-17 06:22:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道我可以让一个线程在特定的时间内睡眠:

time.sleep(NUM)

我怎么能让一根线睡到凌晨2点?我需要做数学运算来确定到凌晨2点的秒数吗?还是有图书馆的功能?

(是的,我知道Windows中的cron和等效系统,但我希望在python中正确地睡眠线程,而不是依赖外部刺激或进程信号。)


Tags: 功能图书馆time信号进程windows系统时间
3条回答

一种可能的方法是睡一个小时。每小时检查一下时间是否在半夜。如果是,继续你的手术。如果没有,再睡一个小时然后继续。

如果用户在一天中更改时钟,这种方法将反映这种更改。虽然它需要更多的资源,但应该可以忽略不计。

这里有一个半屁股的解决方案,不考虑时钟抖动或时钟调整。请参阅注释以了解如何摆脱这种情况。

import time
import datetime

# if for some reason this script is still running
# after a year, we'll stop after 365 days
for i in xrange(0,365):
    # sleep until 2AM
    t = datetime.datetime.today()
    future = datetime.datetime(t.year,t.month,t.day,2,0)
    if t.hour >= 2:
        future += datetime.timedelta(days=1)
    time.sleep((future-t).seconds)

    # do 2AM stuff
import pause
from datetime import datetime

pause.until(datetime(2015, 8, 12, 2))

相关问题 更多 >