【问题标题】:how to exit try loop after code succeed?代码成功后如何退出try循环?
【发布时间】:2016-02-11 20:51:09
【问题描述】:

我下面的代码试图执行一个函数 x,但是因为 x 需要时间来构建,我需要休眠直到它被构建然后调用它。所以我通常需要大约 300 秒来构建。当我运行下面的代码时,它将循环大约 3 次 try 循环,但每次通过 except 代码时都会打印 0

print x(当代码成功并且我中断时)放在for循环之外是否正确,如下所示或其他地方?另外,我如何让i 打印它尝试的次数而不是0

    for i in range(0,10):
        while True:
            try:
                x = my_get_fuction
            except:
                print "error"
                print i
                time.sleep(100)
                continue
            break
    print x

【问题讨论】:

  • 这应该可行,但我认为这种方法存在严重缺陷。您是否考虑过使用异步模型而不是循环 try/except ?
  • 你能举个例子吗?
  • 您希望它打印什么? continue 将继续 while 循环并跳过 break,因此只打印 0 直到您点击 break 语句。
  • @jxn,如果没有更多信息,很难给出一个如何异步执行此操作的示例。 my_get_function 到底在做什么?
  • 不要使用 for 循环,设置 i = 0 并在每次遇到 except 块时递增 i += 1

标签: python for-loop try-catch


【解决方案1】:

您的while 循环似乎与您的设计无关。试试这个:

for i in range(0,10):
    try:
        x = my_get_fuction
    except:
        print "error"
        print i
        time.sleep(100)
        continue
    break
print x

这段代码最多循环10次,每次休眠100s。如果分配的x = my_get_function 在 1000 秒左右没有完成,则循环放弃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多