Python: стоимость памяти при импорте модуля - PullRequest
4 голосов
/ 25 июля 2011

Стоимость памяти, очевидно, зависит именно от того, насколько велик модуль, но я ищу только общий ответ: обычно ли это дорого или дешево импортировать модуль в Python?Если у меня есть несколько десятков небольших сценариев, которые потенциально могут оставаться в памяти на протяжении всего времени работы приложения, сколько это займет памяти?

1 Ответ

7 голосов
/ 25 июля 2011

Похоже, вы не беспокоитесь о стоимости времени (хорошо; это было бы глупо, поскольку модули импортируются только один раз), а также о стоимости памяти. Я говорю вам: если вам нужны все функции этих модулей, то как именно вы планируете избегать хранения всех их в памяти? Также можно просто import вещи самым логичным образом.

Тем не менее, в Python import - это оператор, а не какая-то директива препроцессора (или аналогичная), и поэтому вы можете отложить импорт модуля до тех пор, пока вам действительно не понадобится его содержимое, просто организовав оператор в запустить в подходящее время. Это может быть значимой оптимизацией в некоторых особенно крупных или сложных проектах, или, по крайней мере, сделать возможными сложные вещи. Помните, что компилятор Python не пытается проверить, есть ли foo, когда вы ссылаетесь на foo.bar; каждое имя ищется во время выполнения. Здесь вводится утка; Код foo.bar не заботится о том, является ли foo именем модуля, класса или объекта. (Это в основном потому, что модули и классы являются объектами, но я отвлекся ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...