我试图允许一定的秒数来满足条件。
timeout = time.time() + 15
while SOMETHING NOT MET:
time.sleep(1)
if time.time() > timeout:
raise Exception
continue
这是允许最多 15 秒的正确方法吗?这似乎没有按预期工作。也许有更好/更干净的方法。
最佳答案
按照 documentation 中给出的示例使用 signal.alarm
signal
模块的。
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
而不是循环。
关于python - 如何实现超时功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59953644/