Ich versuche den genauen Effekt der Aufnahme von .pyc-Dateien mit einem Python-Paket in AWS Lambda zu verstehen.
Die wenigen Referenzen, die ich hier finden konnte, sagen, dass es keine Notwendigkeit gibt, .pyc-Dateien in das Paket aufzunehmen. Allerdings sehe ich bei meiner Lambda-Funktion enorme Leistungseinbußen, wenn ich diese Dateien nicht einschließe.
Wenn Sie versuchen, eine Bibliothek mit meinem Paket (z. B. Jinja2) einzubinden, wenn Sie die .pyc-Dateien auslassen, beträgt die Zeit für import jinja2
immer mehr als 3 Sekunden.
Wenn ich .pyc-Dateien zur Verfügung stelle, dauert die erste Ausführung noch 3 Sekunden, aber danach geht es auf 100-200ms runter (ich denke, bis die Funktion irgendwann entladen wird?).
Ich fand das SO Frage , was darauf hindeutet, dass AWS Lambda seine eigenen kompilierten Dateien nicht speichern kann, ist das sinnvoll?
Meine Fragen sind - Gibt es eine bestimmte Informationsquelle bezüglich der Verwendung von .pyc-Dateien mit Python auf AWS Lambda? Gibt es eine Möglichkeit, dass AWS Lambda seine eigenen .pyc-Dateien speichert? Oder sollte ich sie einfach weiter mit meinem Paket einschließen?
Ich denke nicht, die .pyc
-Dateien sind ein Byte-Code , zu dem der Python-Interpreter die Quelle kompiliert und dann wird dieser Code ausgeführt.
In diesem Sinne können wir kontrollieren, welche Dateien die "Python Virtual Machine" ausführen soll.
Ich denke, die beste Lösung ist wie du gesagt hast:
fahre einfach fort, sie in mein Paket aufzunehmen.
Sobald Sie das tun, haben die Code-Executor bereits Ihre Bytecode-Dateien.
Tags und Links python performance aws-lambda