我试图允许一定的秒数来满足条件。
timeout = time.time() + 15
while SOMETHING NOT MET:
time.sleep(1)
if time.time() > timeout:
raise Exception
continue
这是允许长达 15 秒的正确方法吗?这似乎没有按预期工作。也许有一种更好/更清洁的方法。
按照signal
模块文档中给出的示例使用signal.alarm
。
class TimesUpError(RuntimeException):
pass
def handler(signum, frame):
raise TimesUpError
signal.signal(signal.SIGALRM, handler)
signal.alarm(15)
try:
while SOME_CONDITION:
time.sleep(1)
except TimesUpError:
print("Times up, continuing")
finally:
signal.alarm(0)
根据SOME_CONDITION
是什么,您可以使用signal.sigtimedwait
而不是循环。