在Python中限制无限循环

时间:2014-02-20 03:23:58

标签: python python-2.7

如果我有一个无限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

1 个答案:

答案 0 :(得分:8)

记住开始时间,用它计算睡眠时间。

while True:
    start = time.time()
    some_long_process()
    end = time.time()
    remain = start + 10*60 - end
    if remain > 0:
        time.sleep(remain)