动态时间休眠,直到新的分钟从 HH:MM:01 秒开始

Dynamic time sleep until new minute starts with HH:MM:01 second

我有一个 python 代码,通常 运行 会在 20 到 48 秒内完成。

目前我在代码后使用 time.sleep(10) + with while true & 尝试在 10 秒后 运行 相同的代码。

我的 objective 是使用 time.sleep(dynamic) 以便我的代码在同一时间分钟戳(同一分钟内)的多次迭代可以停止以删除数据值的重复。

例如:

##Let say Code runs at 12:30:01 pm

while True:
    try:
        now = datetime.now()
        current_time = now.strftime("%H:%M:%S")
        start = '11:45:01'
        end = '18:02:00'
        if current_time > start and current_time < end:while True:
            Import Code1  ## run first program file
            Import Code1  ## run second program file
            Time.sleep(3)
        else:
            print("out of time")
            time.sleep(3)
    except Exception as e:
        print(e)
        time.sleep(3)
        continue
    continue

现在如果代码在 12:30:50 下午完成,那么 time.sleep(remianing second) 应该 = 10. 如果代码在 12:30:57 pm 完成,那么 time.sleep(remianing second) 应该是 = 3. 如果代码在 12:30:40 pm 完成,那么 time.sleep(remianing second) 应该是 = 20. 等等……

在 12:31:01 秒(或之后)重新开始下一次迭代。

您可以通过标记工作开始和结束的时间来休眠必要的剩余时间(最多一分钟),例如

import time
import random


while True:
    start_time = time.time()
    time.sleep(random.randint(2,5))  # do some work
    worked_time = time.time() - start_time
    print("worked for", worked_time)
    wait_to_align = 60.0 - worked_time % 60.0
    print(f"sleep {wait_to_align} to align to a minute")
    time.sleep(wait_to_align)

生产

worked for 3.002328634262085
sleep 56.997671365737915 to align to a minute
worked for 5.003056764602661
sleep 54.99694323539734 to align to a minute
...