«изменить параметр сглаживания» не требует от системы перезагрузки необработанных несглаженных данных.
Два варианта:
- Встроенная
functools.lru_cache
будет кэшировать каждый уникальный ввод. Проверка памяти выполняется с помощью параметра maxsize
, который контролирует, сколько пар ввода / вывода хранится. - Использование
persist
в нужных местах будет вычислять этот объект, как указано в https://distributed.dask.org/en/latest/manage-computation.html#client -персист . Не потребуется повторного выполнения вычислений, чтобы получить объект в последующих вычислениях; функционально это то же самое, что lru_cache
.
Например, этот код будет читать с диска дважды:
>>> import dask.dataframe as dd
>>> df = dd.read_csv(...)
>>> # df = df.persist() # uncommenting this line → only read from disk once
>>> df[df.x > 0].mean().compute()
24.9
>>> df[df.y > 0].mean().compute()
0.1
Строка без комментария означает, что этот код читает только с диска один раз, потому что граф задач для CSV вычисляется, а значение сохраняется в памяти. Для вашего приложения это звучит так, как будто я бы использовал persist
разумно: https://docs.dask.org/en/latest/best-practices.html#persist -when-you-can
Что, если нужно визуализировать два параметра сглаживания? В этом случае я бы избегал повторного вызова compute
: https://docs.dask.org/en/latest/best-practices.html#avoid -calling-compute-again
lower, upper = client.compute(df.x.min(), df.x.max())
Это разделит график задач для min
и max
, поэтому ненужные вычисления не выполняются.
Я хотел бы, чтобы моя система могла хранить промежуточные объекты данных и разумно определять, какие задачи на графике необходимо повторно запускать в зависимости от того, какие изменены параметры визуализации данных.
Dask Distributed имеет возможность интеллектуального кэширования: https://docs.dask.org/en/latest/caching.html#automatic -opportunisti c -caching . В части документации указано:
Другой подход - наблюдать за всеми промежуточными вычислениями и угадывать, какие из них могут оказаться полезными для использования в будущем. В Dask есть механизм кэширования c, в котором хранятся промежуточные задачи со следующими характеристиками:
- Дорого в вычислении
- Недорого хранить
- Часто используется
Думаю, это то, что вы ищете; он будет хранить значения в зависимости от этих атрибутов.