Автор кувшина здесь: кувшин отлично работает. Я просто попытался следующие, и она работает:
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
(хотя он сжимает его на лету, так что не попало в терминах использования памяти, просто медленнее, чем это могло бы быть).
Я был бы открыт для изменения, которое сохраняет их как частный случай, как кувшин в настоящее время делает для Numpy массивов: https://github.com/luispedro/jug/blob/master/jug/backends/file_store.py#L102
И что происходит, когда вы вызываете' compute (gendata())? Фактически ли он загружает DataFrame из кеша? – Yariv
Если '' gendata() '' вычислялся в другом процессе, тогда да. – luispedro
Есть ли способ запустить кувшин с помощью команды 'python' вместо' jug'? – Light