在 Python 中使用内置库会受到惩罚吗?
Is there a penalty for using built in libraries in Python?
我最近在考虑标准库并在我的编程中使用它们。我开始想知道调用库,我听到很多关于依赖关系和管理它们的讨论,以避免让你的程序因不必要的模块和诸如此类的东西而过载。所以我想知道在使用标准库中的函数和模块时是否有额外的 load/increase 资源使用。
例如,如果我编写了一个完全由标准库函数和 none 我的 "own" 代码构建的程序(意味着我有大量导入语句),我会看到性能下降了吗?还是每个程序都加载了标准库,而不管它是否被调用?因此它是标准库的一部分。
谢谢大家,如果我还不够清楚,很乐意详细说明我的问题。
性能影响很小。
第一次导入模块 将模块字节码和对象加载到内存中(存储在sys.modules
映射中)。该加载将花费少量时间和少量内存。
您必须是一个更大的项目才能开始发挥作用。 Mercurial 项目非常关心启动时间(命令行客户端必须响应迅速),它使用延迟加载方案,其中导入的模块加载被推迟到实际访问时才加载。这样项目可以引用数百个模块(和扩展),但实际上只加载当前命令行选项需要的模块。
另一种方法是使用您自己的代码来定义功能,但为此执行字节码也需要时间和内存,但增加的缺点是您可能引入错误或犯下标准库多年来设法消除的设计错误。
我最近在考虑标准库并在我的编程中使用它们。我开始想知道调用库,我听到很多关于依赖关系和管理它们的讨论,以避免让你的程序因不必要的模块和诸如此类的东西而过载。所以我想知道在使用标准库中的函数和模块时是否有额外的 load/increase 资源使用。
例如,如果我编写了一个完全由标准库函数和 none 我的 "own" 代码构建的程序(意味着我有大量导入语句),我会看到性能下降了吗?还是每个程序都加载了标准库,而不管它是否被调用?因此它是标准库的一部分。
谢谢大家,如果我还不够清楚,很乐意详细说明我的问题。
性能影响很小。
第一次导入模块 将模块字节码和对象加载到内存中(存储在sys.modules
映射中)。该加载将花费少量时间和少量内存。
您必须是一个更大的项目才能开始发挥作用。 Mercurial 项目非常关心启动时间(命令行客户端必须响应迅速),它使用延迟加载方案,其中导入的模块加载被推迟到实际访问时才加载。这样项目可以引用数百个模块(和扩展),但实际上只加载当前命令行选项需要的模块。
另一种方法是使用您自己的代码来定义功能,但为此执行字节码也需要时间和内存,但增加的缺点是您可能引入错误或犯下标准库多年来设法消除的设计错误。