Python-Optimierung: Inspection/Memory Management/Caching

Wer einen langlaufenden Server-Prozess in Python geschrieben hat kennt diese Probleme:

  • Mein Prozess frisst immer mehr Speicher und am Ende bekomme ich "out of memory"
  • Mein Prozess verbraucht eigentlich keinen Speicher ist aber total langsam
  • Mein Prozess kann keinen weiteren File mehr öffnen
Solche Probleme sind nicht auf Python beschränkt. Sie deuten auf schlechtes Resource-Management des Codes hin.
Guter Python-Code sorgt sich um seine Ressourcen:

  • RAM
  • Files
  • Network
  • CPU
Wir zeigen wie ein Python Code sich selbst optimieren kann indem er seinen eigenen Ressourcen-Verbrauch steuert:

  • RAM:
    • Transparent Object caching: If low on RAM stream objects to the HDD
  • Files:
    • share and cache file handles efficiently
  • Network:
    • share and hold TCP-Connections efficiently
  • CPU:
    • Run your processes on a pool of CPUs