Использование памяти продолжает расти при многократном чтении паркетных файловPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Использование памяти продолжает расти при многократном чтении паркетных файлов

Сообщение Anonymous »

Я испытываю проблему, в которой использование памяти моего сценария Python постоянно увеличивается при повторной обработке паркетных файлов с использованием Pyarrow - даже после явного удаления объектов и принудительного сбора мусора. Поведение аналогично, когда я использую другие библиотеки, такие как Polars и Pandas. Я пробовал явные операторы DEL, вызывая gc.collect () и даже с использованием функций пула памяти Pyarrow, таких как PA.Jemalloc_set_decay_MS (0) и Pool.release_Unused (). Несмотря на эти усилия, использование памяти резидента моего процесса продолжает расти из -за последовательных итераций. < /P>
Вот упрощенная версия моего кода: < /p>

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

import psutil
import time
import gc
from datetime import datetime
import pyarrow.parquet as pq
import pyarrow.compute as pc
import pyarrow as pa

def print_memory_usage():
process = psutil.Process()
mem_info = process.memory_info()
print(f"Memory Usage: {mem_info.rss / 1024 / 1024:.2f} MB")

def mem_and_time(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Execution Time: {end_time - start_time:.6f} seconds")
print_memory_usage()
return result
return wrapper

@mem_and_time
def test_func_pyarrow():
# Read Parquet file into a PyArrow Table
# Memory usage increasing also happens when I call
# pd.read_parquet or pl.read_parquet
table = pq.read_table("/Users/test.parquet")
del table
gc.collect()
pa.jemalloc_set_decay_ms(0)
pool = pa.default_memory_pool()
pool.release_unused()

return None

if __name__ == "__main__":
# Run the function repeatedly
for _ in range(1000):
test_func_pyarrow()
time.sleep(20)
< /code>
При запуске этого сценария выход использования памяти показывает устойчивое увеличение: < /p>
Execution Time: 0.985749 seconds
Memory Usage: 4542.09 MB
Execution Time: 0.873830 seconds
Memory Usage: 5926.19 MB
...
Execution Time: 0.774829 seconds
Memory Usage: 7985.73 MB
< /code>
Как я могу решить эту проблему? Это также происходит, когда я вызываю pd.read_parquet 
или pl.read_parquet . Любое понимание или рекомендации будут оценены. P> Pyarrow: 19.0.0
OS: macos sequoia 15.3.1

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

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

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

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

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

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

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