我试图仅在这样的定义时间下执行 while 循环,但即使我们超过定义的限制,while 循环也会继续执行:
import datetime
import time
now = datetime.datetime.now()
minute = now.minute
while minute < 46 :
print "test"
time.sleep(5)
minute = now.minute
一旦我们越过限制,如何停止循环?
谢谢
我试图仅在这样的定义时间下执行 while 循环,但即使我们超过定义的限制,while 循环也会继续执行:
import datetime
import time
now = datetime.datetime.now()
minute = now.minute
while minute < 46 :
print "test"
time.sleep(5)
minute = now.minute
一旦我们越过限制,如何停止循环?
谢谢
您没有minute
正确更新 while 循环内部的值。您应该重新计算now
in 循环的值,然后将新的分配now.minute
给minute
.
while minute < 46 :
print "test"
time.sleep(5)
now = datetime.datetime.now()
minute = now.minute
您需要重新确定循环中的时间。该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)
再次注意,循环每次都需要调用一个方法来确定当前时间是多少。
循环的命题应该是datetime.datetime.now().minute - minute < 46
并且循环的主体不应该是更新的minute
。
您将当前时间存储在now
变量中。相反,您应该每次都在循环中获取当前时间:
import datetime
import time
minute = datetime.datetime.now().minute
while minute < 46 :
print "test"
time.sleep(5)
minute = datetime.datetime.now().minute