我的计算很冗长,需要重复很多次。因此,我想与jug一起使用备忘录(诸如joblibPandas之类的包)。问题在于程序包是否可以很好地将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

09-20 18:16