You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Python中打开关闭文件比加载模块的执行速度更慢?

为什么打开并关闭文件比加载模块(模块本身也需要读取、加载对应的文件)速度更慢?

初始测试结果

打开并关闭文件测试

测试命令如下:

$ python timeit 'open("test.tmp", "r").close()'
50000 loops, best of 5: 5.36 usec per loop

单次执行耗时约5.36微秒。

导入模块测试

初始测试命令如下:

$ python timeit 'import requests; requests.get'
5000000 loops, best of 5: 98.3 nsec per loop

单次执行耗时仅98.3纳秒,远低于打开关闭文件的耗时。

原因说明

出现这个反直觉结果的核心原因是Python的模块缓存机制:Python首次导入模块后,会将模块对象缓存到sys.modules字典中,后续重复执行import语句时,不会重新读取磁盘上的模块文件、也不会重新执行模块初始化逻辑,只会直接返回缓存好的模块对象,因此速度极快。

强制重新导入的对照测试

如果每次导入后手动清除缓存,强制Python每次都重新加载模块,测试结果如下:

$ python -m timeit 'import requests; import sys; del sys.modules["requests"]'
2000 loops, best of 5: 211 usec per loop

此时单次执行耗时约211微秒,远高于打开关闭单个文件的耗时,符合「加载模块需要读取并解析整个模块文件,成本比只打开关闭单个文件更高」的预期。

内容的提问来源于stack exchange,提问作者Marco Aguiar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:39:02