【问题标题】:Python import statement inside and outside a function. What is better for the memory?函数内部和外部的 Python 导入语句。什么对记忆更好?
【发布时间】:2015-11-28 00:07:12
【问题描述】:

当内存问题很严重时,我是否会在函数内执行 python 导入时节省一些内存,以便在调用完成时所有内容都会从内存中丢弃?或者这会增加我的内存和 CPU 的负担,尤其是当我对特定函数进行大量调用时? (用户拨打电话,我事先不知道她会接多少电话)。这种差异对记忆有何影响?

【问题讨论】:

  • 我不认为这是重复的。您所指的问题是从清晰度而不是记忆问题的角度来看待问题。我在问什么对记忆更好
  • 也阅读其他问题的答案。它们包含有关 性能 相关问题的详细说明。也请仔细阅读其他答案。
  • 为什么不对代码进行一些分析并找出答案?
  • 关于 RAM 使用问题,this answer(来自 Bhargav 链接中的评论)提到导入是总是缓存的,即使在函数中执行时也是如此,所以退出函数时内存不会被释放。
  • 如果我正确阅读the module cache,我认为模块不会像常规变量在函数末尾那样收集垃圾。也许从sys.modules 中删除条目会达到你想要的效果,但我从未尝试过。

标签: python python-2.7 python-import


【解决方案1】:

当您导入一个模块时,任何/所有模块对象/函数/等都会被缓存,因此再次导入同一个模块是无操作的。随后,当引用它们的本地名称超出范围时,这些对象/函数/等将不会被释放。这只会影响在模块中全局定义的函数和对象,而且很可能不会有很多,所以可能不用担心。

为了具体回答您的问题,除非导入位于从未执行过的函数或分支内,否则在性能方面实际上没有区别。在这种极少数情况下,将它放在分支或函数中会稍微快一些/占用更少的资源,但不会给你带来太多好处。

【讨论】:

    猜你喜欢
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2020-11-07
    • 2014-09-13
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多