gpt4 book ai didi

python - __pycache__ 文件夹应该包含在生产容器中吗?

转载 作者:行者123 更新时间:2023-12-03 23:02:28 24 4
gpt4 key购买 nike

我想知道是否保留 __pycache__文件夹和 .pyc内置容器中的文件是好还是坏的做法。
一方面,您希望最小化容器的大小,但另一方面,您也不希望减慢容器的执行速度。
考虑到 python 解释器是静态的,这些文件也可以被认为是静态的。
有没有人做过一些性能测试并得出结论?

最佳答案

就我个人而言,我不使用 __pycache__/.pyc如果可能的话,容器中的文件。更具体地说,我尝试构建和运行我的容器,以便它们永远不会生成 .pyc文件(设置环境变量 PYTHONDONTWRITEBYTECODE=1 并将 --no-compile --no-cache-dir 显式地或通过 pip 或等效的环境变量传递给所有 pip.conf 调用),无论是在构建期间还是在运行时。
缓存字节码的优势在于启动时间,而不是执行速度; import需要更长的时间,但实际执行速度同样快(字节码仍在内存中,只是不在磁盘上)。但在容器的情况下,使容器更大意味着缓存和启动需要更长的时间,因此您正在浪费磁盘空间,并且 Python 启动时间的任何增加通常会被首先拉取和启动容器的延迟所抵消。在运行时写出字节码是没有意义的;当容器关闭时它会丢失,因此它会增加启动费用而没有任何好处。
拥有 .pyc Python 本身的基本安装文件还不错(尽管如评论中所述,官方 Dockerfile 已删除它们);由于许多容器依赖于它们,基础 Python 镜像已经被缓存的可能性很高,并且许多预构建的 Python 镜像已经拥有它们(因此事后删除它们无济于事),并且它确实减少了启动时间一些用于在基于它们构建的容器中运行的程序。但是对于每个容器的第三方安装,您只会变得臃肿而没有任何补偿性好处。

关于python - __pycache__ 文件夹应该包含在生产容器中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64808915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com