Ich habe mit den Variablen MALLOC_MMAP_THRESHOLD_ und MALLOC_MMAP_MAX_ env experimentiert, um die Speicherverwaltung in einem lang laufenden Python 2-Prozess zu beeinflussen. Siehe Ссылка
Ich habe die Idee von diesem Fehlerbericht: Ссылка
Die Ergebnisse, die ich habe, sind ermutigend: Die Speicherfragmentierung wird reduziert, und die typische Hochwassermarke, die im Speicher bei lang andauernden Prozessen sichtbar ist, ist geringer.
Meine einzige Sorge ist, wenn es andere Nebenwirkungen gibt, die beißen können, wenn Sie solche Low-Level-Tweaks verwenden. Hat jemand Erfahrung in der Verwendung von ihnen?
Hier ist ein Beispielskript, das zeigt, wie sich diese Variablen auf RSS-Speicher in einem Skript auswirken, das ein großes Wörterbuch generiert: Ссылка Führen Sie einfach "alloc.sh" aus und vergleichen Sie die Ausgabe. Hier ist die Ausgabe für mich:
%Vor%Wie Sie sehen, ist RSS für dieses Beispiel ungefähr 20% weniger als Vanille Python.