为Lambda *编译* Python3是一个好习惯吗?

时间:2018-10-31 07:50:57

标签: python python-3.x amazon-web-services aws-lambda

在Bash中,我可以这样做:

python3 -OO -m py_compile myscript.py

并在内部使用__pycache__构建部署zip,我可以运行多个脚本:

python3 -OO -m compileall .

在同一underlying AMI image中执行此操作。

提高AWS Lambda性能是否明智?

1 个答案:

答案 0 :(得分:2)

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

Lambda的表现包括两个部分:

  1. 为每次并发执行转移,构建和初始化容器
  2. 为每次执行运行代码

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

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

(n.b。MapBox上有一篇很好的文章,关于减小大小并讨论了.pyc部署的效果:https://blog.mapbox.com/aws-lambda-python-magic-e0f6a407ffc6