Python的__pycache__到底缓存什么?能缓存历史运行结果吗?—— 对PyCache的一点研究
为了研究__pycache__的作用,特做实验如下:
大致思路是先“使用版本控制工具git监控文件变动”,再“查阅官方文档进行深入了解”
新建空白测试用文件夹TestForPyCache并进入
初始化Git仓库
新建空白Py文件
1 |
|
意思为创建大小为0的main.py
文件
创建一个最简单的模块
新建MyModel文件夹
并在新建的文件夹中新建两个空白文件__init__.py
和GetSum.py
1 |
|
编辑新建的Py文件
MyModel/GetSum.py:
这里使用一段非常简单的代码进行测试
1 |
|
main.py:
1 |
|
记得保存文件
提交到版本库
可以看到有一次提交记录
并且当前工作区无改动
运行一次main.py
这次输入100000000
可以看到工作区有文件变动,新增了MyModel/__pycache__/
文件夹
同样添加到版本库
可以看到一共有两条提交记录,且工作区无改动
那么,运行其他输入,PyCache会随之改变吗?
再次运行main.py
这次输入值50000000
查看工作区文件状态
发现工作区无改动
这就说明每次运行不同输入可能不会导致__pycache__随之进行多次改变
我电脑上Python的版本为3.9.4
查看官方文档:https://docs.python.org/zh-cn/3.9/tutorial/modules.html?highlight=pycache
点击蓝色链接PEP 3147
:https://peps.python.org/pep-3147/
即可看到pycache创建流程图
(图源:https://peps.python.org/_images/pep-3147-1.png)
只有当“pycache/xx.pyc与源文件不符”时,才会重新编译生成pycache
pycache并不是为了存储“历史某次的执行结果”,而只是“为了快速加载模块的速度,把模块的编译版缓存在 pycache 目录”
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/127724471