Python的__pycache__到底缓存什么?能缓存历史运行结果吗?—— 对PyCache的一点研究
Posted Tisfy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python的__pycache__到底缓存什么?能缓存历史运行结果吗?—— 对PyCache的一点研究相关的知识,希望对你有一定的参考价值。
为了研究__pycache__的作用,特做实验如下:
大致思路是先“使用版本控制工具git监控文件变动”,再“查阅官方文档进行深入了解”
新建空白测试用文件夹TestForPyCache并进入
初始化Git仓库
新建空白Py文件
fsutil file createnew main.py 0
意思为创建大小为0的main.py
文件
创建一个最简单的模块
新建MyModel文件夹
并在新建的文件夹中新建两个空白文件__init__.py
和GetSum.py
fsutil file createnew .\\MyModel\\__init__.py 0
fsutil file createnew .\\MyModel\\GetSum.py 0
编辑新建的Py文件
MyModel/GetSum.py:
这里使用一段非常简单的代码进行测试
# 求1 + 2 + 3 + ... + n
def getSumN(n: int) -> int:
s = 0
for i in range(n + 1):
s += i
return s
main.py:
from MyModel import GetSum
n = int(input("Input the n: "))
result = GetSum.getSumN(n)
print(result)
记得保存文件
提交到版本库
可以看到有一次提交记录
并且当前工作区无改动
运行一次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
以上是关于Python的__pycache__到底缓存什么?能缓存历史运行结果吗?—— 对PyCache的一点研究的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Git 忽略不适用于 __pycache__ 文件夹? [复制]