【问题标题】:Is there a penalty for using built in libraries in Python?在 Python 中使用内置库会受到惩罚吗?
【发布时间】:2017-11-22 13:26:37
【问题描述】:

我最近在考虑标准库并在我的编程中使用它们。我开始想知道调用库,我听到了很多关于依赖关系和管理它们的讨论,以免你的程序因不必要的模块和诸如此类的东西而过载。所以我想知道在使用标准库中的函数和模块时资源使用是否有额外的负载/增加。

例如,如果我编写了一个完全由标准库函数构建的程序,并且没有我的“自己的”代码(这意味着我有大量的导入语句),我会看到性能下降吗?还是每个程序都加载了标准库,无论它是否被调用?因此它是标准库的一部分。

谢谢大家,如果我还不够清楚,很高兴详细说明我的问题。

【问题讨论】:

  • 嘿,约翰,那 60 年的午睡怎么样。睡眠充足吗?
  • 取决于库和实现。在 C 版本中,一些嵌入在基本代码中,因此不会有任何额外的开销。要获取这些列表,请查看 Modules 和 Python 目录下的源代码(例如 Python/sysmodule.c)。所以说“内置”(您的标题)和“标准”(您的文本)不是一回事。
  • @ChristianDean 身体上,我感觉很好。我会给自己开门。

标签: python performance dependencies standard-library


【解决方案1】:

对性能的影响很小。

导入模块第一次将模块字节码和对象加载到内存中(存储在sys.modules 映射中)。该加载将花费少量时间和少量内存。

你必须是一个更大的项目才能开始重要。 Mercurial 项目非常关心启动时间(命令行客户端必须响应迅速),它使用延迟加载方案,其中导入的模块加载延迟到实际访问。这样,项目可以引用数百个模块(和扩展),但仅实际加载当前命令行选项所需的那些。

另一种方法是由您自己的代码来定义功能,但为此执行字节码需要时间和内存,但另外的缺点是您可能会引入错误或制造标准库多年来设法消除的设计错误。

【讨论】:

    猜你喜欢
    • 2015-01-15
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多