Python: Pypy bekommt neuen Garbage-Collector
Der Python-Interpreter Pypy erhält einen neuen, inkrementellen Garbage-Collector. Dieser soll vor allem wesentlich kürzere Pausen verursachen und Python dadurch auch für Spiele interessanter machen.

Wenn ein Programm belegten Speicher nicht mehr benötigt, kommt die Müllabfuhr und räumt den Speicher frei. Dieser mit Garbage Collection bezeichnete Vorgang kann aber zu Pausen führen, in denen das Programm selbst kurz nicht weiter ausgeführt wird. Mit dem neuen Garbage-Collector (GC) des in Python geschriebenen Python-Interpreters Pypy sollen diese Pausen wesentlich verkürzt werden.
Sehr vereinfacht ausgedrückt, wie die Pypy-Entwickler selbst erklären, überprüft Pypy die Objekte im Speicher "ab und zu" statt zyklisch wie in CPython. Dies allein würde aber noch sehr große Pausen verursachen. Deshalb wird die Untersuchung des Speichers und anschließend dessen Bereinigung mit der neuen Implementierung in vielen kleinen Schritten durchgeführt.
Aus Alt mach Neu
Die große Bereinigung ("major collection"), bei der der komplette verwaltete Speicher überprüft wird, stellte die Entwickler beim Schreiben der schrittweisen Überprüfung allerdings vor ein Problem. Sie mussten verhindern, dass Objekte, die bereits als nicht mehr nötig markiert sind, plötzlich wieder von dem Programm benutzt werden, da die Anwendung weiterläuft und so neue Zeiger erzeugen könnte.
Um dies zu verhindern, nutzt Pypy weiterhin die Schreibbarriere aus der alten Implementierung, die einen Zugriff der Anwendung auf bereits markierte Objekte verhindert. Durch diese Wiederverwendung sei es "eigentlich nicht viel Arbeit" gewesen, den neuen GC zu schreiben ohne größere Änderungen an der Codebasis.
Ersten Benchmarks des Projekts zufolge haben sich die GC-Pausen deutlich reduziert. Diese fielen von etwa einer Sekunde auf 100 ms und teilweise noch weniger. Das ist für viele Spiele zwar immer noch nicht gut genug, aber aus Sicht der Entwickler immerhin ausreichend.
Die Arbeit an dem neuen GC, der offiziell Incminimark heißt, wurde von der Raspberry-Pi-Foundation gefördert.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Als stable, oder beta? pypy3 2.1 beta1 steht schon zum DL parat