在定义的时间之间执行while循环

时间:2013-07-06 10:53:03

标签: python

我正在尝试仅在这样的定义时间内执行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 个答案:

答案 0 :(得分:8)

你没有在正确循环中更新minute内部的值。您应该重新计算循环中now的值,然后将新的now.minute分配给minute

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

答案 1 :(得分: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)

再次注意,循环需要每次调用方法 来确定当前时间。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

import datetime
import time

minute = datetime.datetime.now().minute

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