2015-02-27 1 views
1

Я работаю над проектом машинного обучения, который включает в себя обработку большого массива данных . Набор данных можно рассматривать как список объектов, каждый объект содержит 100 МБ данных. Загрузка всех объектов сразу в память замедляет обработку. Моя текущая работа - загрузить каждый объект по отдельности и обработать его и сохранить результат обработки на диск. Этот процесс повторяется для каждого слоя обработки объектов.Кэширование в Python для приложений с интенсивным вычислением

Мне было интересно, если у python есть обходное решение для кеширования, где в основном он кэширует данные на диск и загружает их только тогда, когда они необходимы для обработки?

ответ

0

Вы можете посмотреть Beaker, при этом данные могут быть кэшированы для каждой функции на разные концы, с различными истечениями и разными ключами.

Вы также можете использовать Memoize Decorator. Он кэширует возвращаемое значение функции при каждом вызове. Если вызывается позже с теми же аргументами, возвращается кешированное значение (не переоценивается).

Из Python 3.2 вы можете использовать декоратор @lru_cache из библиотеки functools. Это последний недавно используемый кэш, поэтому для его элементов нет времени истечения срока действия, но в качестве быстрого взлома это очень полезно.

Вы также можете использовать joblib. Прозрачный диск кэширование выходных значений и ленивой повторной оценки (memoize рисунок), простое простого параллельного вычисления протоколирования и отслеживания исполнения

0

Мне было интересно, если питон имеет кеширование обходного путь, где в основном это данные кэша на диск и загружать их только тогда, когда они необходимы для обработки ?

Разве это не «кеширование», что вы уже делаете? Вы загружаете подмножества один за другим и обрабатываете их самостоятельно. (Надеюсь, вы не сделаете это вручную)

Вам повезло, что вам не нужно , чтобы загрузить все наборы данных одновременно.

Смежные вопросы