如果我有一个无限while
循环,我怎么能让循环在循环迭代开始后每10分钟运行一次下一次迭代?
如果第一次迭代在凌晨1:00开始并在凌晨1点09分结束,则下一次迭代应该在凌晨1点10分运行,而不是等待另外10分钟(如下面的代码片段中所示)。如果循环迭代运行超过10分钟,则下一次迭代应立即运行并开始倒计时10分钟。
while(True):
someLongProcess() # takes 5-15 minutes
time.sleep(10*60)
示例
Loop 1: Starts 1:00am, ends 1:09am
Loop 2: Start 1:10am, ends 1:25am # ends 5 minutes later
Loop 3: Starts 1:25am, ends 1:30am # ends 5 minutes earlier
Loop 4: Starts 1:35am, ends 1:45am
答案 0 :(得分:8)
记住开始时间,用它计算睡眠时间。
while True:
start = time.time()
some_long_process()
end = time.time()
remain = start + 10*60 - end
if remain > 0:
time.sleep(remain)