Python:导入模块的内存成本

时间:2011-07-25 06:45:39

标签: python memory-efficient

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

1 个答案:

答案 0 :(得分:7)

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

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