У меня возникли проблемы с вычислением, так как getizeof () Python не возвращает потребление памяти объектами, на которые ссылается словарь.
Если бы у меня было несколько функций, которые можно было бы вызывать в зависимости от заданного ввода:
def foo(x):
mapping = {'a':func1,
'b':func1,
'c':func2,
'd':func2,
'e':func2,
'f':func3,
...etc.}
return mapping[x]()
и некоторые из входов привели к тому, что одна и та же функция вызывается, хранит ли несколько копий (или это ссылки?) Функции, что приведет к увеличению объема памяти?
Я пытаюсь определить, будет ли более эффективным использование памяти для создания промежуточного словаря, в котором хранится только одна копия функции:
functions = {0:func1,
1:func2,
2:func3,
...etc.}
и замените все значения функций в «отображении» соответствующим целым числом для экономии места. Я немного осведомлен о том, как изменяемые и неизменяемые объекты работают в Python, и мой первоначальный вывод заключается в том, что все значения, которые ссылаются на одну и ту же функцию, не приводят к тому, что большее количество копий функции занимает память. Это правильно?
В несколько связанном вопросе, если бы я должен был распечатать идентификатор объекта, используя id (), все ли объекты с одинаковым идентификатором ссылаются на одно и то же место в памяти (и, следовательно, не занимают больше памяти в словаре )