我正在尝试使用 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()
上面的代码给出了警告/错误“warnings.warn(最大似然优化失败”并且比原始代码花费的时间更长。
答案 0 :(得分:0)
您可能希望将 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)