我正在使用 metpy 库进行天气计算。我正在使用多处理库并行运行它们,但我遇到了罕见的异常,这些异常会完全停止程序。我无法提供一个最小的可重现示例,因为我无法复制 metpy 库函数的问题,而且在问题发生之前运行了大量代码,我无法在此处放出。
我想知道如何编写多处理代码来告诉pool.starmap函数在遇到错误时通过。我的代码中的第一步生成一个参数列表,然后将其与metpy函数(在本例中为metpy.ccl)一起传递给pool.starmap函数。metpy.ccl的参数列表包括压力级别、空气温度和露点值的列表。
ccl_pooled = pool.starmap(mpcalc.ccl, ccl_argument_list)
我试图编写一个通用函数,它将接受我传递给它的 metpy 函数并在遇到错误时告诉它通过。
def run_ccl(p,t,td):
try:
result = mpcalc.ccl(p,t,td)
except IndexError:
pass
有没有办法让我编写“run_ccl”函数,以便我可以检查原始代码行中的错误 - 如下所示:
ccl_pooled = pool.starmap(run_ccl, ccl_argument_list)
如果不是,那么最好的方法是什么?编辑:澄清一下,这些参数列表有数千个数据点。我想传递导致问题的数据点(并在结果中为该数据点输入一个 nan,“ccl_pooled”),然后继续。