[译]pycache是什么?

Posted everfight的成长之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[译]pycache是什么?相关的知识,希望对你有一定的参考价值。

原回答: https://stackoverflow.com/questions/16869024/what-is-pycache

当你用python运行一个程序时,解释器首先将它编译成字节码(这是一种过度简化)并将其存储在__pycache__文件夹中。
如果你看看那里你会发现一堆文件共享项目文件夹中的.py文件的名称,只有他们的扩展名是.pyc或.pyo。
这些分别是您的程序文件的字节码编译和优化的字节码编译版本。

作为一名程序员,你可以在很大程度上忽略它......它所做的只是让你的程序开始更快一点。
当你的脚本改变时,它们将被重新编译,如果你删除了文件或者整个文件夹并且再次运行你的程序,它们将会重新出现(除非你明确地禁止了这个行为)
如果您使用的是cpython(这是最常见的,因为它是参考实现),并且您不需要该文件夹,那么可以通过启动具有-B标志的解释器来禁止它

python -B foo.py

python解释器的工作顺序:
1 完成模块的加载和链接;
2 将源代码编译为PyCodeObject对象(即字节码),写入内存中,供CPU读取;
3 从内存中读取并执行,结束后将PyCodeObject写回硬盘当中,也就是复制到.pyc或.pyo文件中,以保存当前目录下所有脚本的字节码文件;
4 之后若再次执行该脚本,它先检查【本地是否有上述字节码文件】和【该字节码文件的修改时间是否与其脚本一致】。是就直接执行,否则重复上述步骤。

以上是关于[译]pycache是什么?的主要内容,如果未能解决你的问题,请参考以下文章

随机 pycache 文件夹生成 - 编码新手

译ECMAScript 2016, 2017, 2018 新特性之必读篇

小知识点如何在 git 中取消 __pycache__ 文件

小知识点如何在 git 中取消 __pycache__ 文件

[译] 如何在React中写出更优秀的代码

为啥 Git 忽略不适用于 __pycache__ 文件夹? [复制]