Python 实现超时。以下代码有什么问题?
程序第一次打印过期。我希望代码在打印过期之前至少打印4次“未过期”。有人能解释一下原因并帮我更正代码吗。多谢各位Python 实现超时。以下代码有什么问题?,python,time,Python,Time,程序第一次打印过期。我希望代码在打印过期之前至少打印4次“未过期”。有人能解释一下原因并帮我更正代码吗。多谢各位 import time TIMEOUT = 5 class Timer (): def __init__(self): self.timeout = time.time()+TIMEOUT def isExpired (): return time.time() > self.timeout timing = Timer()
import time
TIMEOUT = 5
class Timer ():
def __init__(self):
self.timeout = time.time()+TIMEOUT
def isExpired ():
return time.time() > self.timeout
timing = Timer()
def main():
while 1:
if timing.isExpired:
print "Expired"
return
else:
print "Not expired"
print "sleeping for 1 second"
time.sleep(1)
if __name__== "__main__":
main()
您有几个问题:
isExpired
方法提供自参数。将其定义为def isExpired(self):
计时=计时器()
移到while循环之外timing.isExpired
是对方法对象iself的引用(在布尔上下文中始终为true)。您需要执行计时。isExpired()
来实际调用它这些都是基本的Python问题,与
计时器
无关。阅读以了解如何使用类等。您有几个问题:
isExpired
方法提供自参数。将其定义为def isExpired(self):
计时=计时器()
移到while循环之外timing.isExpired
是对方法对象iself的引用(在布尔上下文中始终为true)。您需要执行计时。isExpired()
来实际调用它这些都是基本的Python问题,与
计时器
无关。阅读以了解如何使用类等。您每次都在创建一个计时器
实例。将其从循环中移除,否则您的while循环将永远不会终止。此外,您还需要调用timing.isExpired
,因为它是一种方法。因此,您的代码应该是:
import time
TIMEOUT = 60 * 5
class Timer ():
def __init__(self):
self.timeout = time.time()+TIMEOUT
def isExpired (self):
return time.time() > self.timeout
def main():
timing = Timer()
while 1:
if timing.isExpired():
print "Expired"
return
else:
print "Not expired"
print "sleeping for 1 second"
time.sleep(1)
您每次都在创建一个
计时器
实例。将其从循环中移除,否则您的while循环将永远不会终止。此外,您还需要调用timing.isExpired
,因为它是一种方法。因此,您的代码应该是:
import time
TIMEOUT = 60 * 5
class Timer ():
def __init__(self):
self.timeout = time.time()+TIMEOUT
def isExpired (self):
return time.time() > self.timeout
def main():
timing = Timer()
while 1:
if timing.isExpired():
print "Expired"
return
else:
print "Not expired"
print "sleeping for 1 second"
time.sleep(1)
i get errorTypeError:isExpired()不接受任何参数(给定1)@user1488987参考第1点。-调用实例函数时,隐式地将实例作为第一个参数,而函数
isExpired
根本不接受任何参数。我得到errorTypeError:isExpired()不接受任何参数(给定1)@user1488987参考第1点。-调用实例函数时,隐式地将实例作为第一个参数,而函数isExpired
根本不接受任何参数。我使用了计时器实例。但是程序的行为保持不变。@user1488987我测试了它,它运行正常。问题是超时时间是300秒,所以如果你不耐烦的话,应该减少这个数字:)我使用了计时器实例。但是程序的行为保持不变。@user1488987我测试了它,它运行正常。问题是超时时间是300秒,所以如果你不耐烦,应该减少这个数字:)