首页 > 解决方案 > 收集数据

问题描述

我不确定这是否可能,但我正在处理 python 中的日期时间,所以我知道它会让人感到困惑。

我有一个 python 脚本,每 5 分钟运行一次,并在 5 分钟到 3 分钟之间收集数据。如果脚本在 00 秒运行,这工作正常

我不确定这是否可能,但我正在处理 python 中的日期时间,所以我知道它会让人感到困惑。

我有一个 python 脚本,每 5 分钟运行一次,并在 5 分钟到 3 分钟之间收集数据。如果脚本在 00 秒运行,这工作正常

标签: python

解决方案


我通常做的是对我感兴趣的间隔取模,所以在你的情况下是 15 分钟:

>>> t = time.time()
>>> t
1555065206.8165069
>>> t += 15*60-1
>>> t -= t % (15*60)
>>> t
1555065900.0
>>> time.localtime(t)
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=12, tm_hour=12, tm_min=45, tm_sec=0, tm_wday=4, tm_yday=102, tm_isdst=1)

所以你可以做的是:

import time

while True:
    t = time.time()
    t += 15*60-1
    t -= t % (15*60)
    print(time.localtime(t))
    print('printing again in 5 minutes')
    time.sleep(5*60)

那应该输出如下内容:

time.struct_time(tm_year=2019, tm_mon=4, tm_mday=12, tm_hour=16, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=102, tm_isdst=1)
printing again in 5 minutes
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=12, tm_hour=16, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=102, tm_isdst=1)
printing again in 5 minutes
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=12, tm_hour=16, tm_min=15, tm_sec=0, tm_wday=4, tm_yday=102, tm_isdst=1)
printing again in 5 minutes
...

推荐阅读