Ermitteln Sie das freie RAM in Python

8

Ich möchte, dass mein Python-Skript den gesamten verfügbaren freien RAM verwendet, aber nicht mehr (aus Effizienzgründen). Ich kann dies kontrollieren, indem ich nur eine begrenzte Menge an Daten einlese, aber ich muss wissen, wie viel RAM zur Laufzeit frei ist, um das richtig zu machen. Es wird auf einer Vielzahl von Linux-Systemen laufen. Ist es möglich, das freie RAM zur Laufzeit zu bestimmen?

    
marshall 18.07.2013, 08:33
quelle

4 Antworten

5

Sie könnten einfach /proc/meminfo vorlesen. Beachten Sie, dass der "freie Speicher" normalerweise ziemlich niedrig ist, da das Betriebssystem viel freien, ungenutzten Speicher für das Caching verwendet.

Außerdem ist es am besten, wenn Sie nicht versuchen, die Speicherverwaltung Ihres Betriebssystems zu überlisten. Das endet normalerweise in Tränen (oder langsameren Programmen). Besser nehmen Sie nur den RAM, den Sie brauchen. Wenn Sie so viel wie möglich auf einer Maschine mit einer bisher unbekannten Speicherkapazität verwenden möchten, würde ich wahrscheinlich prüfen, wie viel RAM installiert ist ( MemTotal in /proc/meminfo ), einen bestimmten Betrag für das Betriebssystem und als Sicherheitsabstand (sagen 1 GB) und den Rest verwenden.

    
Carsten 18.07.2013, 08:47
quelle
15

Auf Linux-Systemen verwende ich das von Zeit zu Zeit:

%Vor%

Sie können dies ausführen, wenn Ihr Skript gestartet wird. RAM wird normalerweise auf einem ausgelasteten System häufig verwendet und freigegeben. Sie sollten dies also berücksichtigen, bevor Sie entscheiden, wie viel RAM zu verwenden ist. Außerdem haben die meisten Linux-Systeme einen Swappiness-Wert von 60. Bei der Verwendung von Speicher werden Seiten, die am wenigsten verwendet werden, ausgelagert. Sie können SWAP anstelle von RAM verwenden.

Hoffe, das hilft.

    
Gabriel Samfira 18.07.2013 08:46
quelle
3

Da das ursprüngliche Poster geschrieben hat, dass der Code auf einer Vielzahl von Linux -Systemen laufen sollte, poste ich hier eine objektorientierte Lösung für die Linux-Speicherabfrage. psutil ist eine großartige Bibliothek, aber wenn Sie sie aus irgendeinem Grund nicht installieren können, können Sie einfach die folgende Lösung verwenden:

Beispielverwendung:

%Vor%

Code:

%Vor%     
Oz123 12.06.2014 14:17
quelle
0

Ich nehme an, Sie könnten kostenlos ( Ссылка ) verwenden. , ps oder vielleicht die Klasse MemoryMonitor aus dem SO-Thread, die am Ende meiner Antwort steht, um dies zu tun. Machen Sie einfach etwas Spielraum und lassen Sie eine kleine Menge von RAM für andere Prozesse ungenutzt, wenn sie dringend benötigt werden, um Festplatten-Schreibvorgänge in ihrem Namen zu vermeiden.

Sie müssen die Ausgabe von free oder ps analysieren, wenn Sie das verwenden, aber das sollte nicht schwer sein. Denken Sie daran, dass Sie die verfügbare RAM-Echtzeit analysieren müssen, damit Sie einstellen können, ob ein anderer Prozess aus irgendeinem Grund Speicherhungrig wird.

siehe auch diesen Thread: Wie erhält man die aktuelle CPU- und RAM-Auslastung in Python?

    
nic 18.07.2013 08:39
quelle

Tags und Links