Это хорошая практика для * компиляции * Python3 для Lambda? - PullRequest
0 голосов
/ 31 октября 2018

В Bash я могу сделать:

python3 -OO -m py_compile myscript.py

И сборка zip для развертывания с __pycache__ внутри, для нескольких скриптов, которые я могу запустить:

python3 -OO -m compileall .

Выполнение этого в том же базовом образе AMI .

Разумно ли для улучшения производительности AWS Lambda?

1 Ответ

0 голосов
/ 31 октября 2018

Ответ - да, но это, вероятно, немного преждевременная оптимизация.

Лямбда состоит из двух частей:

  1. Передача, сборка и запуск контейнера для каждого одновременного выполнения
  2. Запуск кода для каждого выполнения

.pyc файлы предлагают вам некоторую оптимизацию 1, или время «холодного запуска». Это потому, что вы можете отправлять только pyc файлы, и они имеют тенденцию быть меньше (сокращая время передачи), а также потому, что вы уже скомпилировали в байт-код, что отнимает шаг процесса сборки (обратите внимание, что python все еще компилируется, но это, тем не менее, оптимизация).

Честно говоря, я был бы удивлен, если бы это имело достаточно различий, чтобы оправдать дополнительную сложность при развертывании и результирующую непрозрачность кода в лямбда-консоли. И поэтому я бы попросил вас профилировать, используя что-то вроде X-Ray, прежде чем начинать оптимизацию по сравнению с чем-либо в вашем реальном коде.

(примечание. В MapBox есть хорошая статья об уменьшении размера и обсуждении эффекта развертывания .pyc: https://blog.mapbox.com/aws-lambda-python-magic-e0f6a407ffc6)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...