首页 > 解决方案 > 为 Lambda *编译 * Python3 是一个好习惯吗?

问题描述

在 Bash 中,我可以这样做:

python3 -OO -m py_compile myscript.py

__pycache__在内部构建部署 zip,对于我可以运行的多个脚本:

python3 -OO -m compileall .

在相同的基础 AMI 映像中执行此操作。

AWS Lambda 性能提升是否明智?

标签: pythonpython-3.xamazon-web-servicesaws-lambda

解决方案


答案是肯定的,但这可能有点过早的优化。

Lambda 的性能有两个部分:

  1. 为每个并发执行传输、构建和初始化容器
  2. 为每次执行运行代码

.pyc文件为您提供了一些优化 1 或“冷启动”时间。这是因为您只能发送文件pyc,而且它们往往更小(减少传输时间),并且因为您已经编译为字节码,这会减少构建过程的一个步骤(请注意,python 仍在进一步编译,但它仍然是一种优化)。

坦率地说,如果这足以证明部署时增加的复杂性和 lambda 控制台中代码的不透明性,我会感到惊讶。因此,在您对实际代码中的任何内容进行此优化之前,我会挑战您使用 X-Ray 之类的东西进行分析。

(nb MapBox 有一篇关于减小尺寸和讨论.pyc部署效果的好文章:https ://blog.mapbox.com/aws-lambda-python-magic-e0f6a407ffc6 )


推荐阅读