【问题标题】:Python: Memory cost of importing a modulePython:导入模块的内存成本
【发布时间】:2011-10-12 08:35:20
【问题描述】:

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

【问题讨论】:

  • 除非您使用嵌入式平台或其他东西,否则我不会担心它。为什么不试试看。大多数(全部?)操作系统都有办法查看进程正在使用多少内存。
  • @gnibbler 当然,但它们通常不是很准确。现代操作系统中的内存管理涉及多层烟雾和镜子。但我同意这不太重要:)

标签: python memory-efficient


【解决方案1】:

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

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

【讨论】:

  • 这基本上就是 Bazaar DVCS 所做的;您可能想查看它的来源及其“lazy_import”机制。
猜你喜欢
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-19
  • 2019-11-22
  • 2015-10-06
  • 2011-02-24
相关资源
最近更新 更多