Увеличьте использование оперативной памяти при анализе столбца данных json.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Увеличьте использование оперативной памяти при анализе столбца данных json.

Сообщение Anonymous »

tl;dr - У меня огромное потребление оперативной памяти, и я не знаю почему.
У меня есть эта функция. Чтобы подсчитать использование оперативной памяти на моем сервере:

Код: Выделить всё

def log_memory_usage():
memory_info = psutil.virtual_memory()
memory_used_gb = memory_info.used / (1024**3)  # Convert to GB
logger.info(f"System-wide memory used: {memory_used_gb:.2f} GB")


У меня есть столбец фрейма данных, представляющий собой строковый формат JSON.
При просмотре потребления оперативной памяти с помощью функции выше и df.info(memory_usage='deep' я получаю странные результаты:

Код: Выделить всё

2024-10-30 14:34:44,016 [semantic population]: INFO : System-wide memory used: 2.41 GB

Index: 363925 entries, 0 to 367312
Data columns (total 7 columns):
#   Column                 Non-Null Count   Dtype
---  ------                 --------------   -----
0   table_id               363925 non-null  object
1   table                  363925 non-null  object
2   table_from_name_field  363925 non-null  object
3   column                 363925 non-null  object
4   source_data            363925 non-null  object
5   schema                 363925 non-null  object
6   openai_res             363925 non-null  object
dtypes: object(7)
memory usage: 3.3 GB


Я понятия не имею, как вся оперативная память составляет 2,41 ГБ, а кадр данных 3.3.
Затем я запускаю функцию, чтобы изменить столбец JSON на его ключи:

Код: Выделить всё

def get_row(row):
try:
js = json.loads(row['openai_res'])
row['description'] = js['description']
row['business_term'] = js['business_term']
row['explanation'] = js['explanation']
row['columns'] = js['columns']
row['openai_res'] =  pd.NA
del js
return row
except ValueError as e:
return
df = df.progress_apply(get_row,axis=1)


Результаты еще более странные:

Код: Выделить всё

Index: 363925 entries, 0 to 367312
Data columns (total 11 columns):
#   Column                 Non-Null Count   Dtype
---  ------                 --------------   -----
0   table_id               355757 non-null  object
1   table                  355757 non-null  object
2   table_from_name_field  355757 non-null  object
3   column                 355757 non-null  object
4   source_data            355757 non-null  object
5   schema                 355757 non-null  object
6   openai_res             0 non-null       object
7   description            355757 non-null  object
8   business_term          355757 non-null  object
9   explanation            355757 non-null  object
10  columns                355757 non-null  object
dtypes: object(11)
memory usage: 980.0 MB
2024-10-30 14:42:59,203 [business_terms.py]: INFO : None
2024-10-30 14:42:59,207 [semantic population]: INFO : System-wide memory used: 24.07 GB


Итак, мои вопросы:
  • Как правильно измерить, сколько оперативной памяти занимает мой фрейм данных?
  • Если я сделаю это правильно, как мне освободить всю оперативную память? это берется при анализе json?
  • Я думаю, это связано с ОС. Это происходит на моем сервере AmazonLinux EC2, но на моем MacBook Pro потребление оперативной памяти примерно такое же.
Спасибо, я действительно не понимаю такого поведения. на моем сервере происходит сбой из-за OOM

Подробнее здесь: https://stackoverflow.com/questions/791 ... ame-column
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»