• `__pycache__` 是什么


    为了提高模块加载的速度,每个模块都会在 __pycache__ 文件夹中放置该模块的预编译模块,命名为 module.version.pyc, version 是模块的预编译版本编码,一般都包含 Python 的版本号。例如在 CPython 发行版 3.4 中,fibo.py 文件的预编译文件就是:__pycache__/fibo.cpython-34.pyc。这种命名规则可以保证不同版本的模块和不同版本的 python 编译器的预编译模块可以共存。

    脚本在运行之前会首先检查 python 文件的最后编辑日期和预编译模块的编译时间,从而决定是否需要重新编译。预编译模块也是跨平台的,所以不同的模块是可以在不同的系统和不同的架构之间共享的。

    Python 在两种情况下不检查缓存。第一种,从命令行中直接加载的模块总是会重新编译并且结果不保存。第二种,如果没有源模块,则不会检查缓存。为了支持无源代码的部署方式,应该将预编译模块放在源代码文件夹中而不是 __pycache__ 中,并且不要包含源代码模块。

    你可以使用 -O-OO 参数来降低预编译模块的大小。-O 开关会去除 assert 语句,-OO 开关会去除 assert 语句和 __doc__ 字符串。因为有些模块要依赖这些语句,因此只有当你确认模块的内容时才去使用这些开关。优化模块的后缀名是 .pyo

    .pyo.pyc 文件的执行速度不会比 .py 文件快,快的地方在于模块加载的速度。
    compileall 模块可以用来把某个文件夹的中的所有文件都编译成为 .pyc 或者 .pyo 文件。

  • 相关阅读:
    一位年轻女董事长的忠告:不想穷下去就请看
    Ajax拓展02
    Ajax拓展
    Ajax概念及基础
    PHP了解01
    CSS3新增功能03
    CSS3新增功能02
    CSS3新增功能01
    html5介绍
    jQuery学习03
  • 原文地址:https://www.cnblogs.com/q735613050/p/8305060.html
Copyright © 2020-2023  润新知