在特定点开始嵌套for循环



假设我有一个嵌套循环

for i in range(15):
setup_things(i)
for ii in range(16):
do_very_expensive_thing(i, ii)

我在i=9ii=15有一个错误(假设非常昂贵的事情是数据库调用,它超时并在堆栈深处引发异常)

我如何修复我的范围,以便我可以重新运行do_very_expensive_thing(9, 15)并继续使用do_very_expensive_thing(10, 0)并在不运行任何我已经运行的情况下完成我的循环?

我不能做

for i in range(9,15):
setup_things(i)
for ii in range(16):
do_very_expensive_thing(i, ii)

因为这会导致(9,0)到(9,14)重新运行。

这很简单。您可以使用while循环来代替for。例子:

i = 0
ii = 0
while i < 15:
setup_things(i)
while ii < 16:
try:
do_very_expensive_thing(i, ii)
ii += 1
except Exception as e:
# log the exception for debugging
# do recovery if possible
# else just use pass
pass
i += 1

这将完成你的工作。

最新更新