verfügbaren RAM ermitteln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

verfügbaren RAM ermitteln

Beitragvon CM » Donnerstag 26. März 2009, 14:00

Hoi,

Zum Ermitteln des verfügbaren RAMs habe ich mir dies ergoogelt. Mal abgesehen davon, dass os.popen nicht der letzte Schrei ist: Geht das so? Insbesondere unter Windows, was ich nicht testen kann, ist 'nt' da noch aktuell? Oder wie würdet ihr das machen?

Falls es das Thema schon mal gab: Ich habe es nicht gefunden.

Gruß,
Christian
jerch
User
Beiträge: 1622
Registriert: Mittwoch 4. März 2009, 14:19

Beitragvon jerch » Donnerstag 26. März 2009, 14:52

Wie wärs unter linux mit open('/proc/meminfo')? Keine Ahnung, was Windows hier angeht.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Donnerstag 26. März 2009, 15:00

Na ja, das ist in der Tat erst einmal einfacher als den Aufruf von "free". :-) Danke.

Frage: Ist das auf allen posix-Systemen gleich aufgebaut?

Gruß,
Christian
jerch
User
Beiträge: 1622
Registriert: Mittwoch 4. März 2009, 14:19

Beitragvon jerch » Donnerstag 26. März 2009, 15:30

Frage: Ist das auf allen posix-Systemen gleich aufgebaut?

Davon würd ich nicht ausgehen, zumindest unter AIX ist es wohl auf "Linux-Norm" gehievt. Für andere Unices müßte das halt getestet werden. Dasselbe gilt aber auch für den "free"-Weg, da sich die Ausgaben der einzelnen Unixvarianten dann doch hin und wieder mal unterscheiden bzw. im Detail anders gelöst sind.
Benutzeravatar
kbr
User
Beiträge: 779
Registriert: Mittwoch 15. Oktober 2008, 09:27
Wohnort: Düsseldorf

Beitragvon kbr » Donnerstag 26. März 2009, 15:30

CM hat geschrieben:Frage: Ist das auf allen posix-Systemen gleich aufgebaut?

Gruß,
Christian


Also, bei FreeBSD und Mac OS X geht das so nicht. Dort kenne ich nur die Möglichkeit die Speicherbelegung mit "top" zu erfahren (abgesehen von OS X GUI Tools).
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Donnerstag 26. März 2009, 15:36

kbr hat geschrieben:... Mac OS X geht das so nicht.

Oh ja, ich erinnere mich - OSX ist da etwas anders. Danke.
lunar

Beitragvon lunar » Donnerstag 26. März 2009, 16:50

Was ist mit "free"? Dessen Ausgabe dürfte leichter zu parsen sein ..
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Beitragvon Darii » Donnerstag 26. März 2009, 20:36

kbr hat geschrieben:Dort kenne ich nur die Möglichkeit die Speicherbelegung mit "top" zu erfahren (abgesehen von OS X GUI Tools).
Wäre zum Beispiel eine Idee zu gucken, wie das in top gelöst ist...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 26. März 2009, 23:33

Darii hat geschrieben:Wäre zum Beispiel eine Idee zu gucken, wie das in top gelöst ist...

``top`` ist AFAIR platformspezifisch und kein Programm das man auf verschiedene Platformen (also quasi Backends) portiert hat. Linux nutzt procps aber das scheint auch tatsächlich nur dort zu funktionieren.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Beitragvon Darii » Freitag 27. März 2009, 09:23

Proc ist ja auch OS-Spezifisch und auch nicht Teil es POSIX-Standards(sonst würde OSX es unterstützen). Aber das top platformspezifisch ist sollte eigentlich kein Problem darstellen, dann muss man halt nur an verschiedenen Stellen suchen...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 27. März 2009, 09:28

Ja, in verschiedenen ``top``s: Linux top, Solaris top, BSD top.. da fände ich es wenn dann sinnvoller ``htop`` zu untersuchen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Freitag 27. März 2009, 14:15

@CM: Dein Snippet scheint zumindest unter Windows XP zu funktionieren. Es liefert bei meinem Rechner mit 1 GB 1022 MB.
MfG
HWK
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Samstag 28. März 2009, 08:48

Unter Vista x64 liefert es nicht wirklich den richtigen Wert. Hab 8GB im system, laut sysinternals process explorer sind ca. 5,8GB frei, das Skript liefert 4095 (nehme an, MB).

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
JoaoRodrigues
User
Beiträge: 2
Registriert: Samstag 28. März 2009, 13:37
Kontaktdaten:

Beitragvon JoaoRodrigues » Samstag 28. März 2009, 13:44

Hello all :) After seeing so many visit from the blog coming from here I thought I'd better have a look and maybe learn something. Though, German seems harder to understand than Dutch :D

The script I wrote works well under my Linux machine and under Windows XP. For others, I honestly don't know because I never had the chance nor the need to try it.

I've been also pointed out to the fact that using the contents of /proc/meminfo might be better. But, since this works for what I need, I'll keep using it :)

Also, for checking for Vista, since it returns 'nt' as well, it would probably work better if you just go with the platform module (and its release method).

Finally, maybe the API I'm using only works for XP and that's why in Vista it works below expectations!

Cheers all!
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Montag 30. März 2009, 12:59

Hi,

Thanks for all these replies. And thanks João for you comment.

lunar, as the linked snipped shows the usage of 'free' I sticked with it, although I'm using subprocess.
That would be:

Code: Alles auswählen

totalmemory = subprocess.Popen(["free -m"], stdout=subprocess.PIPE,
                                            stderr=subprocess.PIPE,
                                            shell=True).communicate()[0].split()[7]


João, you might want to go with subprocess as well and inherit new style classes from 'object', too. As for permissions: May I use your snippet within my code? Of course, I would show the source like that: merit where merit is due!.

As soon as I get a solution for Vista, I'll include that, but so far Windows users aren't in my strongest focus anyway.

Cheers,
Christian

edit:
PS Ik ben het er niet mee eens, dat het lezen van een tekst in het Duits tekst veel moeilijker is, dan van een in het Nederlands - het hangt er gewoon van jouw talenkennis af, hoor ;-).

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder