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

Python 在定义的时间之间执行while循环,python,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 导入日期时间 导入时间 now=datetime.datetime

我试图只在这样一个定义的时间下执行while循环,但是while循环即使在超出定义的限制时也会继续执行:

import datetime
import time

now = datetime.datetime.now()

minute = now.minute

while minute < 46 :
    print "test"
    time.sleep(5)
    minute = now.minute
导入日期时间
导入时间
now=datetime.datetime.now()
分钟=现在
分钟<46时:
打印“测试”
时间。睡眠(5)
分钟=现在
一旦我们越过极限,如何停止循环


谢谢

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

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

import time

start = time.time()

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

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

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

while minute < 46 :
    print "test"
    time.sleep(5)
    now = datetime.datetime.now()
    minute = now.minute
分钟<46时:
打印“测试”
时间。睡眠(5)
now=datetime.datetime.now()
分钟=现在

您正在
now
变量中存储当前时间。相反,每次都应该获取循环中的当前时间:

import datetime
import time

minute = datetime.datetime.now().minute

while minute < 46 :
    print "test"
    time.sleep(5)
    minute = datetime.datetime.now().minute
导入日期时间
导入时间
分钟=datetime.datetime.now().minute
分钟<46时:
打印“测试”
时间。睡眠(5)
分钟=datetime.datetime.now().minute

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

现在
是在
之外定义的,而
将是一个常量。
while minute < 46 :
    print "test"
    time.sleep(5)
    now = datetime.datetime.now()
    minute = now.minute