2014-02-20 61 views
4

如果我有一個無限的while循環,我該如何讓循環從循環迭代開始每10分鐘運行一次迭代?速度限制在Python中的無限while循環

如果第一次迭代從凌晨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 
+3

如果超過10分鐘會怎麼樣? – thefourtheye

+0

@thefourtheye如果循環迭代運行超過10分鐘,則應立即運行下一次迭代並開始倒計時10分鐘。在不同條件下添加了一個時間示例 – Nyxynyx

+2

*開始上午1點10分,結束上午1點09分< - 有點腥 – hjpotter92

回答

8

記住的開始時間,使用該計算的睡眠時間。

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