【发布时间】:2011-03-06 22:07:50
【问题描述】:
在速度和内存效率方面,在函数内部导入 Python 模块和/或函数的优缺点是什么?
是否在每次运行函数时重新导入,或者无论函数是否运行,都可能只在开始时重新导入一次?
【问题讨论】:
-
没有速度优势(调用
import非常昂贵,即使模块已经加载)。如果您想要速度优势,则将模块分配给局部变量作为您在函数中执行的第一件事,然后通过该局部变量访问它会更快(如果您访问模块至少 4-5 次) (因为局部变量查找非常快)。 -
@Nick:听这个的时候,重复导入似乎很慢,因为每次你都在尝试检查它是否被导入。你是说在函数外导入它并设置为全局变量并在函数内部抓取全局变量?
-
@Tim:加快模块访问速度的最佳方法(假设这是您想要做的,并且您访问模块足以使本地分配值得)是
import模块像往常一样在文件级别,然后在函数内部将模块分配给局部变量。为了使分配有价值,您可能需要在函数内访问该模块至少 4 次 - 如果您使用该模块的频率低于此,则在全局级别进行直接 module.symbol 查找不会更慢比本地分配/查找。 -
@NickBastin 将模块分配给局部变量是否仍然是 5 年半后的优化?
-
@NickBastin 您的 pycon 链接已损坏。
标签: python python-import