python - 如何实现超时功能?

标签 python python-3.x time

我试图允许一定的秒数来满足条件。

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/

相关文章:

javascript - 你如何使用 javascript 设置 strftime?

python - 在 Django 模板中调用 Python 函数

python - filecmp.dircmp中的common_funny和funny_files有什么区别?

python - 如何为战舰中的舰船生成统计上可能的位置

Python 正则表达式不匹配 http ://

python - 在异常中搜索字符串是不好的做法吗?

python - 读取 pygame 显示的当前标志(全屏等)

sql - 转换 HH :MM:SS

python - 如何将一个数字除以索引中的一个数字?

java - 如何在几周内停止或崩溃 Android 应用程序?