我有一个嵌套循环,在其中对3维数组中的每个网格点执行计算。这些网格点中的一些会触发错误。我想计算每个可能的网格点,并跳过那些触发错误的网格点。
我尝试过:
with sharedmem.MapReduce(np=45) as pool:
def calc_func(abc):
for k in range(241):
try:
for j in range(int(datetime_range)):
for l in range((abc), abc+1):
value = calc(pr[j,k,l], te[j,k,l], de[j,k,l])
array[j,k,l] = value
except (IndexError, ValueError):
continue
pool.map(cape_func, range(0, 479))
^上面,计算了一些网格点,但是我认为当异常中捕获到k个值时,代码不会为该k计算其余的网格点。
下面,我尝试添加另一个try-except块来遍历所有网格点。我认为这行不通-似乎无限循环。
with sharedmem.MapReduce(np=45) as pool:
def calc_func(abc):
for k in range(241):
try:
for j in range(int(datetime_range)):
try:
for l in range((abc), abc+1):
value = calc(pr[j,k,l], te[j,k,l], de[j,k,l])
array[j,k,l] = value
except (IndexError, ValueError):
continue
except (IndexError, ValueError):
continue
pool.map(cape_func, range(0, 479))
答案 0 :(得分:0)
我认为您可能正在寻找pass
而不是continue
的语句。但是我可能不太了解您的问题。在旁注中,您不能对其进行矢量化吗?
由于所有循环都超出范围,因此似乎唯一可能引发Index
或Value
错误的是calc
函数。为什么不只用功能和数组分配包装2条代码行?