【发布时间】:2017-09-30 19:30:11
【问题描述】:
我需要我的脚本休眠到下一个每小时 15 分钟的间隔,例如整点、一刻钟、半点钟和一刻钟。
它看起来像这样
While True:
//do something
sleepy_time = //calculate time to next interval
time.sleep(sleepy_time)
您可以编写一系列 if 语句来检查当前分钟数是多少,然后执行“if current
编辑:基于@martineau 的回答,这是我使用的代码。
import datetime, time
shouldRun = True
if datetime.datetime.now().minute not in {0, 15, 30, 45}:
shouldRun = False
# Synchronize with the next quarter hour.
while True:
if shouldRun == False:
current_time = datetime.datetime.now()
seconds = 60 - current_time.second
minutes = current_time.minute + 1
snooze = ((15 - minutes%15) * 60) + seconds
print('minutes:', minutes, 'seconds', seconds, ' sleep({}):'.format(snooze))
localtime = time.asctime( time.localtime(time.time()))
print("sleeping at " + localtime)
time.sleep(snooze) # Sleep until next quarter hour.
shouldRun = True
else:
localtime = time.asctime( time.localtime(time.time()))
print("STUFF HAPPENS AT " + localtime)
shouldRun = False
他的答案和这之间的区别在于,这个 else 块每个间隔只运行一次,然后如果分钟仍然在 0、15、30、45 间隔上,则计算额外的秒数以添加到睡眠时间,直到下一个间隔。
【问题讨论】:
-
@AndreyMuzalevsky 我不希望它每 15 分钟运行一次。我希望它在整点、一刻钟、半点钟和一刻钟时运行。如果脚本在 17:10 开始,则每 15 分钟运行一次是行不通的,因为下一次运行要等到 17:25 而不是 17:15。
-
crontab 会为你工作吗?
-
@AndreyMuzalevsky 不幸的是没有。托管服务器的公司已限制作业,因此您不能让它们每 15 分钟运行一次。乔的回答似乎奏效了
-
如果您的主机无法为您提供运行作业的能力 - 您也可能陷入最大执行时间限制...
标签: python python-2.7 time