我的计算很冗长,需要重复很多次。因此,我想与jug一起使用备忘录(诸如joblib和Pandas之类的包)。问题在于程序包是否可以很好地将Pandas DataFrames记住为方法参数。
有人尝试过吗?还有其他推荐的包装/方法吗?
最佳答案
水 jar 的作者在这里:水 jar 工作正常。我只是尝试了以下方法,它的工作原理是:
from jug import TaskGenerator
import pandas as pd
import numpy as np
@TaskGenerator
def gendata():
return pd.DataFrame(np.arange(343440).reshape((10,-1)))
@TaskGenerator
def compute(x):
return x.mean()
y = compute(gendata())
它的效率不尽如人意,因为它只是内部使用
pickle
作为DataFrame
(尽管它会在运行中对其进行压缩,所以在内存使用方面并不可怕;只是比它可能的速度慢)。我很乐意接受将这些保存为特例的更改,就像水 jar 当前对numpy数组所做的那样:https://github.com/luispedro/jug/blob/master/jug/backends/file_store.py#L102