Я написал небольшое веб-приложение, использующее фреймворк, который включает в себя построение графиков с помощью matplotlib.Проблема в том, что каждый раз, когда я создаю график, процесс потребляет больше памяти.
Я развернул приложение, используя mod_wsgi с файлом .wsgi, который выглядит просто так:
from yourapplication import app as application
Проблемы начинаются, когда я получаю доступ к URL, который создает сюжет.Функция создает объект плоттера, который при инициализации извлекает соответствующие данные из базы данных sqlite3 (данные состоят из около 30 целых чисел и одинакового числа объектов datetime), создает график с использованием matplotlib и возвращает объект StringIO, который затем отображается на экране.,
Это конец функции.Весь класс можно увидеть здесь
canvas = FigureCanvas(fig)
png_output = StringIO.StringIO()
canvas.print_png(png_output)
return png_output.getvalue()
Когда я посещаю сайт, создается процесс с около 25 МБ зарезервированной памяти.В первый раз, когда я создаю график, он увеличивается до 30 МБ, а затем примерно по 1 МБ каждый раз, когда я использую класс плоттера.В настройках по умолчанию использовалось 5 процессов, которые занимали слишком много памяти (до 150 МБ в течение нескольких минут, и мне разрешено только 80 МБ).
Я очень новичок во всем, что здесь происходит (веб-фреймворки, apache, базы данных), поэтому я не чувствую, что что-то может пойти не так, поэтому любые идеи высоко ценятся.Спасибо!