【发布时间】: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