У меня есть Python3 программное обеспечение, которое использует нейронные сети и sklearn.feature_extraction.text.CountVectorizer
. У меня также есть много экземпляров этого программного обеспечения (более 100), и мне трудно понять, почему каждый экземпляр потребляет до 190 МБ ОЗУ, из которых 60 МБ совместно используются.
Хотя объем памяти нейронной сети очень низок Я не могу понять, почему только следующее утверждение (и другие операции импорта torch , pandas и numpy) приводят к увеличению использования памяти программного обеспечения
from sklearn.feature_extraction.text import CountVectorizer
Я занимался Python3 управлением памятью, распределением кучи и многими другими темами, но насколько я понимаю, побочным эффектом вышеприведенного утверждения является получение всех символов из sklearn.feature_extraction.text
загружены в память не только класс CountVectorizer
и его зависимости.
Во-первых, я испытал желание подумать, что проблема заключается в использовании из CountVectorizer
, поэтому после краткого исследования Я перенес управление памятью на класс c marisa_trie
. После многих тестов память, потребляемая процессом, была одинаковой, поэтому был сделан вывод, что управление nn не было настоящей проблемой.
Я наконец-то смоделировал простой скрипт на Pyton3, просто оператор import (и гуппи ) для отслеживания его памяти, и я обнаружил, что только этот оператор заставляет процесс съедать> 60 МБ памяти.
Это мой другой импорт:
import numpy as np
import pandas as pd
import torch
import torch.nn as nn
import torch.onnx
from torch import optim
import marisa_trie
from sklearn.feature_extraction.text import CountVectorizer
- Как можно максимально эффективно использовать память при использовании этих импортов?
- Это ограничение языка программирования?
- Должен ли я использовать другие функции языка для достижения желаемого результата?