Fla*_*lyn 3 python time python-2.7
我需要我的脚本休眠直到下一个 15 分钟的每小时间隔,例如整点、一刻钟、半点半和一刻钟。
\n\n它看起来像这样
\n\nWhile True:\n //do something\n sleepy_time = //calculate time to next interval\n time.sleep(sleepy_time)\nRun Code Online (Sandbox Code Playgroud)\n\n您可以编写一系列 if 语句来检查当前经过一小时的分钟数,然后执行 \xe2\x80\x98if current < 15\xe2\x80\x99 和 \xe2\x80\x98if current < 30\xe2\x80\ x99 等,但这看起来很混乱且效率低下。
\n\n编辑:基于@martineau的答案,这是我使用的代码。
\n\nimport datetime, time\n\nshouldRun = True\nif datetime.datetime.now().minute not in {0, 15, 30, 45}:\n shouldRun = False\n# Synchronize with the next quarter hour.\nwhile True:\n if shouldRun == False:\n current_time = datetime.datetime.now()\n seconds = 60 - current_time.second\n minutes = current_time.minute + 1\n snooze = ((15 - minutes%15) * 60) + seconds\n print(\'minutes:\', minutes, \'seconds\', seconds, \' sleep({}):\'.format(snooze))\n localtime = time.asctime( time.localtime(time.time()))\n print("sleeping at " + localtime)\n time.sleep(snooze) # Sleep until next quarter hour.\n shouldRun = True\n else:\n localtime = time.asctime( time.localtime(time.time()))\n print("STUFF HAPPENS AT " + localtime)\n shouldRun = False\nRun Code Online (Sandbox Code Playgroud)\n\n他的答案与此之间的区别在于,每个间隔仅运行一次 else 块,然后如果该分钟仍在 0、15、30、45 间隔,则会计算额外的秒数以添加到睡眠分钟数中,直到下一个间隔。
\ndatetime...来实现这一点调用datetime.datetime.now()将返回 a datetime,您可以使用 获取当前minute值。hour.minute
minutes一旦我们有了过去的数量hour,我们就可以得到下一个区间的modulo 15数量。minutes15
从这里,只需调用time.sleep()该次数minutes(60一60分钟内的秒数)即可。
其代码可能类似于:
import datetime, time
minutesToSleep = 15 - datetime.datetime.now().minute % 15
time.sleep(minutesToSleep * 60)
print("time is currently at an interval of 15!")
Run Code Online (Sandbox Code Playgroud)