Python:导入模块的内存成本

标签 python memory-efficient

内存成本显然取决于模块的大小,但我只是在寻找一个一般性的答案:在 Python 中导入模块通常是昂贵还是便宜?如果我有几十个小脚本,它们可能会在整个应用程序运行期间都保留在内存中,这会占用多少内存?

最佳答案

听起来您并不担心时间成本(很好;那会很愚蠢,因为模块只导入一次),而是内存成本。我告诉你:如果你需要这些模块中的所有功能,那么你究竟打算如何避免将它们全部存储在内存中?还不如以最合乎逻辑的方式导入东西。

就是说,在 Python 中 import 是一个语句而不是某种预处理器指令(或类似指令),因此您可以延迟模块的导入,直到您真正需要它的内容,只需简单地安排语句在适当的时间运行。在一些特别大或复杂的项目中,这可能是一个有意义的优化,或者至少使棘手的事情成为可能。请记住,当您引用 foo.bar 时,Python 编译器不会尝试检查是否存在 foo;每个名字都在运行时查找。鸭子打字在这里发挥作用; foo.bar 代码不关心 foo 是模块、类还是对象的名称。 (这基本上是因为模块和类对象,但我离题了...)

关于Python:导入模块的内存成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6812571/

相关文章:

c++ - 是否建议在循环内声明变量?

java - 如何在Java中解析包含多个工作表、内存在50MB以内的xls文件

python - 版本控制的 Tensorflow textsum 错误

python - 模块未找到错误: No module named 'my_app'

python - 如何打破包含 </s>) 的行,</s> 来自 Pandas 数据框的字符串模式

performance - 排序算法效率/性能

python - 如何从 Python 中的两对文件中获取枢轴线?

python - 根据列表中列表的大小返回两个列表

python - 如何动态地重新加载自定义包中的模块?

algorithm - 如何在 Photoshop 等专业绘图应用程序中存储用于撤消重做的 Action ?