почта Моя жизнь помощь регистрация вход
Краснодар:
погода
апреля
19
понедельник,
Вход в систему
Логин:
Пароль: забыли?

Использовать мою учётную запись:


tobimarsh
Сообщение      28-10-2020, 14:49
У меня есть веб-приложение Flask, которое использует большой DataFrame (сотни мегабайт). DataFrame используется в приложении для нескольких различных моделей машинного обучения. Я хочу создать DataFrame только один раз в приложении и использовать его в нескольких запросах, чтобы пользователь мог создавать разные модели на основе одних и тех же данных. Сеанс Flask не предназначен для больших данных, поэтому это не вариант. Я не хочу возвращаться и воссоздавать DataFrame, если источником данных является файл CSV (фу). быть
 
У меня есть решение, которое работает, но я не могу найти обсуждение этого решения в переполнении стека. Это заставляет меня подозревать, что мое решение может быть плохой дизайнерской идеей. Я всегда исходил из предположения, что проторенный путь в разработке программного обеспечения - это хорошо выбранный путь.
 
Мое решение - просто создать класс держателя данных с одной переменной класса:
 
Text
class DataHolder:
     dataFrameHolder = None

Теперь dataFrameHolder известен всем экземплярам класса (как статическая переменная в Java), поскольку он хранится в памяти на сервере.
 
Теперь я могу один раз создать DataFrame и поместить его в класс держателя данных:
 
Text
import pandas as pd
from dataholder import DataHolder
 
result_set = pd.read_sql_query(some_SQL, connection)
df = pd.DataFrame(result_set, columns=['col1', 'col2',....]
DataHolder.dataFrameHolder = df

Затем получите доступ к этому DataFrame из любого кода, импортирующего класс DataHolder. Затем я могу использовать сохраненный DataFrame в любом месте приложения, в том числе для разных запросов:
 
Text
.
.
modelDataFrame = DataHolder.dataFrameHolder
do_some_model(modelDataFrame)
.
.

Это плохая идея, хорошая идея или есть еще что-то, о чем я не знаю, что уже решает проблему?
------------------------
Преследуя Machine Learning training course
Ответить
Ваше имя:
Сообщение:      

Введите код