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
Speicher Problem
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Nein, tut sie nicht.Xynon1 hat geschrieben: - Die eigentliche Frage lautet doch: Was machst du das du soviel Speicher brauchst?
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.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
@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?
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?
@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.
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.
- 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.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
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.
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.
- b.esser-wisser
- User
- Beiträge: 272
- Registriert: Freitag 20. Februar 2009, 14:21
- Wohnort: Bundeshauptstadt B.
Bestimmt, schau mal nachMathek hat geschrieben:OSX läuft auf 64-bit, aber Python nicht. Gibt es das überhaupt als 64-Bit Version?
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.
PyPy benötigt prinzipiell weniger Speicher pro Objekt, eventuell kommt man damit hin.
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.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.
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.
- 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
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
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…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.
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.
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.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.
Zuletzt geändert von Darii am Donnerstag 7. April 2011, 16:34, insgesamt 4-mal geändert.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
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.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.
Gruß, noisefloor
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.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.
Also Daten speichersparend verarbeiten und dabei Datenmenge sinnvoll reduzieren und man ist für lange Zeit erstmal seine Speicherprobleme los.
- 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
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
Textdateien kann man ja auch Stück für Stück aufbauen, das geht bei (unkomprimierten) Grafiken bestimmt auch.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.
Bei Grafiken, die komprimiert gespeichert werden, könnte man die Grafik eventuell in Fragmente unterteilen, die unabhängig voneinander komprimiert werden.