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
一种可能的方法是睡一个小时。每小时检查一下时间是否在半夜。如果是,继续你的手术。如果没有,再睡一个小时然后继续。
如果用户在一天中更改时钟,这种方法将反映这种更改。虽然它需要更多的资源,但应该可以忽略不计。
这里有一个半屁股的解决方案,不考虑时钟抖动或时钟调整。请参阅注释以了解如何摆脱这种情况。
相关问题 更多 >
编程相关推荐