我正在尝试仅在这样的定义时间内执行while循环,但是即使我们超出定义的限制,while循环也会继续执行:
import datetime
import time
now = datetime.datetime.now()
minute = now.minute
while minute < 46 :
print "test"
time.sleep(5)
minute = now.minute
一旦超过限制,如何停止循环?
由于
答案 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