内存成本显然取决于模块的确切大小,但我只是在寻找一般答案:在Python中导入模块通常是昂贵还是便宜?如果我有几十个小脚本可能会在整个应用程序期间留在内存中,那么占用多少内存呢?
答案 0 :(得分:7)
听起来你并不担心时间成本(好;那会很愚蠢,因为模块只导入一次)但是内存成本。我告诉你:如果你需要这些模块中的所有功能,那么你打算如何避免将它们全部留在内存中?也可能以最合乎逻辑的方式处理import
事。
那就是说,在Python import
中是一个语句而不是某种预处理器指令(或类似的),所以你可以通过简单地安排一个模块来延迟模块的导入,直到你真正需要它的内容为止。声明在适当的时间运行。这可以是一些特别大或复杂的项目中的有意义的优化,或者至少使棘手的事情成为可能。请记住,当您引用foo
时,Python编译器不会尝试检查是否存在foo.bar
;每个名字都在运行时查找。鸭子打字在这里发挥作用; foo.bar
代码不关心foo
是否是模块,类或对象的名称。 (这基本上是因为模块和类是对象,但我离题了......)