Speicher Problem

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.
Antworten
Mathek
User
Beiträge: 9
Registriert: Dienstag 17. August 2010, 14:58

Hallo zusammen,
ich habe einen PC (MacOS) mit 4 GB RAM. Trotzdem bekomme ich einen Error wenn Python ca. 1,7GB-2GB des RAMs verwendet.

Meine Frage:
1) Warum benutzt Python nicht noch den verbleibenden Speicher von ca. 1GB?
2) Warum schreibt Python nicht einfach in die ,,Auslagerungsdatei'' weiter.
3) Gibt es Einstellungen um Python mehr Speicher zu zuweisen?

PS: ich benutze easyEclipse und Python 2.7

Vielen Dank im Voraus
Mathek
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

:shock: - Die eigentliche Frage lautet doch: Was machst du das du soviel Speicher brauchst?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Xynon1 hat geschrieben::shock: - Die eigentliche Frage lautet doch: Was machst du das du soviel Speicher brauchst?
Nein, tut sie nicht.

Python begrenzt die Speichermenge nicht sondern nimmt was es kriegen kann, wenn es welchen braucht. Physischer Speicher hat auf den verbreiteten OS ueberhaupt nichts mit dem maximalen Speicher pro Prozess zu tun, dafuer ist das OS zustaendig.
deets

@Mathek

Ich habe zwar noch nie konkretes darueber gelesen (anders als bei Windows & Linux), aber OSX kann auch nicht hexen - darum die Frage: ist es denn auch ein 64-Bit-OSX, und wenn ja, benutzt du auch 64-Bit-Python?
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

@cofi
Um das Problem eventuell zu beheben schon. Es muss ja nicht zwangsläufig sein das man wirklich 2 GB RAM braucht, sondern das das einfach an einem kleinen Design-Fehler liegt. Es reicht ja schon ein "range" irgendwo hinzusetzen wo eigentlich ein "xrange" hin sollte.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

@Xynon1: Oh da stimme ich schon mit dir ueberein, nur bleibt die Frage legitim, da es nun wirklich viele Einsatzgebiete gibt wo es kein Problem ist auf diese Datenmengen zu kommen.
Mathek
User
Beiträge: 9
Registriert: Dienstag 17. August 2010, 14:58

Danke für eure Antworten.

Ich wollte einfach ein Histogramm mit sehr, sehr,sehr vielen Daten plotten und das scheint nicht zu funktionieren.

@deets
OSX läuft auf 64-bit, aber Python nicht. Gibt es das überhaupt als 64-Bit Version?
Wie machen es denn die Unis? Die können doch auch alles berechnen lassen.
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

Mathek hat geschrieben:OSX läuft auf 64-bit, aber Python nicht. Gibt es das überhaupt als 64-Bit Version?
Bestimmt, schau mal nach :twisted:
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Zum einen kann ein Prozess nicht beliebig viel Speicher allokieren, zum anderen kann es sein dass durch Fragmentierung nicht mehr genug aneinander liegender Speicher zu Verfügung steht und deswegen Speicher fehlt.

PyPy benötigt prinzipiell weniger Speicher pro Objekt, eventuell kommt man damit hin.
Peak_me
User
Beiträge: 92
Registriert: Sonntag 27. Januar 2008, 03:09

Ich tippe darauf, dass wenn du die Speicherraubenden Programmstücke hier postest, einige Leute dir extrem nützliche Hinweise gegeben können, wie du den RAM-Bedarf von 1 GB auf 50 MB runterschrauben kannst.
deets

Mathek hat geschrieben:Danke für eure Antworten.

Ich wollte einfach ein Histogramm mit sehr, sehr,sehr vielen Daten plotten und das scheint nicht zu funktionieren.

@deets
OSX läuft auf 64-bit, aber Python nicht. Gibt es das überhaupt als 64-Bit Version?
Wie machen es denn die Unis? Die können doch auch alles berechnen lassen.
Ja, wie du sicher auch leicht haettest selbst rausfinden koennen. Und wenn wir mal annehmen, dass deine > 2GB Daten wirklich sein muessen, dann ist Python mit 32Bit auch die Erklaerung, warum du Probleme hast. Je nach OS kann ein Prozess auch bei ausreichendem Speicher nicht mehr als eine bestimmte Menge Speicher allozieren, weil in den Addressraum von 4GB irgendwelche Kernel-Bereiche gemappt werden, usw.

Eine kurze Suche bei Google hat ergeben, dass das Limit bei OSX angeblich wirklich 2GB ist (MSB wird als Diskriminator verwandt). Ich traue dem zwar nicht unbedingt, aber ein Indiz ist es.

Also, Python in 64 Bit besorgen, und nochmal gucken.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Ich wuerde mich fragen, ob ich die Daten alle auf einmal in den Speicher laden muss oder ob ich die auch nacheinander abklappern kann. Generatoren koennten da helfen.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

deets hat geschrieben:Eine kurze Suche bei Google hat ergeben, dass das Limit bei OSX angeblich wirklich 2GB ist (MSB wird als Diskriminator verwandt). Ich traue dem zwar nicht unbedingt, aber ein Indiz ist es.
Nein, das Limit beim 32bit OSX ist 4 GB pro Prozess, das System selbst kann noch ein paar GB mehr verwalten (PAE). Aber dazu muss der Computer das unterstützen. Funktioniert also nur mit Mac die auf Santa Rosa oder neuer laufen…

Siehe auch: http://www.appleinsider.com/articles/08 ... indle.html

Nichtsdestotrotz sollten 2GB auf jeden Fall möglich sein, bezweifle, dass die Grafikkarte so groß ist.
Mathek hat geschrieben:OSX läuft auf 64-bit, aber Python nicht. Gibt es das überhaupt als 64-Bit Version?
Wie machen es denn die Unis? Die können doch auch alles berechnen lassen.
Das verwundert mich. Was verwendest du da für eine Version? Python ist unter Snow Leopard als 64/32bit Version vorinstalliert, wovon die 64bit-Version standardmäßig verwendet wird.
Zuletzt geändert von Darii am Donnerstag 7. April 2011, 16:34, insgesamt 4-mal geändert.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

argh..mal wieder zitieren statt editieren gedrückt…
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Rebecca hat geschrieben:Ich wuerde mich fragen, ob ich die Daten alle auf einmal in den Speicher laden muss oder ob ich die auch nacheinander abklappern kann. Generatoren koennten da helfen.
Funktioniert das, wenn man eine Grafik plotet? Ich meine, die Grafik braucht ja am Ende doch alle Werte auf einmal... - oder habe ich da einen Denkfehler drin.

Gruß, noisefloor
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

noisefloor hat geschrieben:Funktioniert das, wenn man eine Grafik plotet? Ich meine, die Grafik braucht ja am Ende doch alle Werte auf einmal... - oder habe ich da einen Denkfehler drin.
Jein, bei Grafiken sollte man die Menge der Datenpunkte halt begrenzen. Da bedankt sich sonst der pdf-Viewer wenn der 2 Mio. Linien Zeichen darf. Grundsätzlich ist mehr als ein Datenpunk pro Bildpunkt z.B. nicht zielführend. Wenn man das einhält knackt man nie im Leben die 2GB Marke.

Also Daten speichersparend verarbeiten und dabei Datenmenge sinnvoll reduzieren und man ist für lange Zeit erstmal seine Speicherprobleme los.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

gut, kein Denkfehler. :-)

Zumal der OP ja ein Histogramm erstellen will - das muss man ja so wie so keine Datenpunkte zeichnen, sondern erstmal nur die Verteilung zählen dann dann ein paar Balken oder eine Linie zeichnen.

Das (also das Zählen) geht wohl auch gut per Iterator, so dass man nicht alles in den Speicher laden muss.

Gruß, noisefloor
Peak_me
User
Beiträge: 92
Registriert: Sonntag 27. Januar 2008, 03:09

Funktioniert das, wenn man eine Grafik plotet? Ich meine, die Grafik braucht ja am Ende doch alle Werte auf einmal... - oder habe ich da einen Denkfehler drin.
Textdateien kann man ja auch Stück für Stück aufbauen, das geht bei (unkomprimierten) Grafiken bestimmt auch.
Bei Grafiken, die komprimiert gespeichert werden, könnte man die Grafik eventuell in Fragmente unterteilen, die unabhängig voneinander komprimiert werden.
Antworten