如何使用 Dask 和 Arima 并行化一个简单的函数?

How to paralellize a simple function with Dask and Arima?

我正在尝试将一个简单的函数与 Dask 并行化,以尝试使事情变得更快......但我非常挣扎!有人能帮忙吗?这是我当前的代码:

order_aic_bic=[]

@delayed
def test(df):
    model = ARIMA(df, order=(p, d, q))
    results = model.fit()
    return results

for p in range(10):
    for q in range(10):
        try:
            a = test(ir)
            order_aic_bic.append((p, d, q, a.aic, a.bic))
        except:
            print(p, d, q, None, None)

graph = delayed()(order_aic_bic)
lst = graph.compute()

上面的代码给出了 warning/error "warnings.warn(最大似然优化失败 " 并且比原始代码花费的时间更长。

您可能希望将 p, d, q 显式传递给 test 函数。否则,我认为不能保证他们会使用适当的值。

此外,不需要 try/except 块,因为总是会返回惰性值并且不会调用 except 块(实际上,您试图从惰性模块中获取 .aic ,这样会导致错误,但如果您的 try 块不包含该错误,则不需要 try/except

from dask import delayed, compute

@delayed(nout=2)
def test(df, p, d, q):
    model = ARIMA(df, order=(p, d, q))
    results = model.fit()
    return results.aic, results.bic


order_aic_bic = []

for p in range(10):
    for q in range(10):
        a = test(ir)
        order_aic_bic.append((p, d, q, *a))

final = compute(order_aic_bic)