python - 为 Lambda *编译 * Python3 是一个好习惯吗?
问题描述
在 Bash 中,我可以这样做:
python3 -OO -m py_compile myscript.py
并__pycache__
在内部构建部署 zip,对于我可以运行的多个脚本:
python3 -OO -m compileall .
在相同的基础 AMI 映像中执行此操作。
AWS Lambda 性能提升是否明智?
解决方案
答案是肯定的,但这可能有点过早的优化。
Lambda 的性能有两个部分:
- 为每个并发执行传输、构建和初始化容器
- 为每次执行运行代码
.pyc
文件为您提供了一些优化 1 或“冷启动”时间。这是因为您只能发送文件pyc
,而且它们往往更小(减少传输时间),并且因为您已经编译为字节码,这会减少构建过程的一个步骤(请注意,python 仍在进一步编译,但它仍然是一种优化)。
坦率地说,如果这足以证明部署时增加的复杂性和 lambda 控制台中代码的不透明性,我会感到惊讶。因此,在您对实际代码中的任何内容进行此优化之前,我会挑战您使用 X-Ray 之类的东西进行分析。
(nb MapBox 有一篇关于减小尺寸和讨论.pyc
部署效果的好文章:https ://blog.mapbox.com/aws-lambda-python-magic-e0f6a407ffc6 )
推荐阅读
- c# - 无法使用 Azure Batch Account 任务执行 powershell 脚本
- python - Pandas:“ValueError:无法将字符串转换为浮点数:”(空字符串)
- javascript - 在不读取/写入数据库的情况下更新表元素
- mongodb - 将地理数据从 MongoMapper 迁移到 Mongoid
- node.js - 流星性能问题
- firebase - 在 vuefire 的 firestore 内的“this”中获取“undefined”
- scala - 是什么导致了 MissingRequirementError: object scala not found 斯坦福主题建模工具箱中的错误?
- jquery - 使用 jQuery 计算一组输入的总和
- javascript - 按钮“onclick”不起作用(被检测到)
- c# - 如何从存储过程中检索单个值