Python 代码成功后如何退出try循环?

Python 代码成功后如何退出try循环?,python,for-loop,try-catch,Python,For Loop,Try Catch,我下面的代码试图执行函数x,但由于x需要时间来构建,我需要在构建之前一直休眠,然后调用它。所以我通常需要300秒来建造。当我运行下面的代码时,它将在try循环中循环大约3次,但每次通过时都会打印0,除了代码 将打印x(当代码成功而我中断时)放在下面的for循环之外或其他地方是否正确?另外,如何使i打印它正在尝试的时间,而不是0 for i in range(0,10): while True: try: x = my

我下面的代码试图执行函数x,但由于x需要时间来构建,我需要在构建之前一直休眠,然后调用它。所以我通常需要300秒来建造。当我运行下面的代码时,它将在try循环中循环大约3次,但每次通过
时都会打印
0
,除了
代码

打印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

您的
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次,每次睡眠100秒。如果分配的
x=my_get_函数在1000秒左右没有完成,那么循环就放弃了。

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