2013-07-06 99 views
8

之间我想只有在这样一个规定的时间执行while循环,但while循环,甚至继续执行,当我们上面定义的限制:执行while循环规定的时间

import datetime 
import time 

now = datetime.datetime.now() 

minute = now.minute 

while minute < 46 : 
    print "test" 
    time.sleep(5) 
    minute = now.minute 

一旦我们超越极限,如何阻止循环?

谢谢

+4

'now'在'while'外被定义,因此将是一个常数值。 – hjpotter92

回答

8

您正在更新内部循环的minute值。您应该在循环中重新计算now的值,然后将新的now.minute指定为minute

while minute < 46 : 
    print "test" 
    time.sleep(5) 
    now = datetime.datetime.now() 
    minute = now.minute 
4

您需要重新确定循环中的时间。 minute变量是静态,它不更新以反映更改时间。

如果要循环一定的时间,开始time.time()代替,然后计算经过时间:

import time 

start = time.time() 

while time.time() - start < 300: 
    print 'test' 
    time.sleep(5) 

将打印“测试”每5秒5分钟(300秒) 。

当然,您也可以使用datetime对象,但time.time()调用稍微简单一些。

要循环直到一定时间datetime可以使用,如:

import datetime 

while datetime.datetime.now().minute < 46: 
    print 'test' 
    time.sleep(5) 

再次注意,环路必须每次调用一个方法来确定当前的时间是什么。

0

您正在将当前时间存储在now变量中。相反,你应该得到的当前时间的循环,每次里面:

import datetime 
import time 

minute = datetime.datetime.now().minute 

while minute < 46 : 
    print "test" 
    time.sleep(5) 
    minute = datetime.datetime.now().minute 
1

循环的命题应该是datetime.datetime.now().minute - minute < 46和循环体不应该被更新minute