假设我有一个嵌套循环
for i in range(15):
setup_things(i)
for ii in range(16):
do_very_expensive_thing(i, ii)
我在i=9
和ii=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
这将完成你的工作。