Systemumgebungsvariablen setzten und auslesen?

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
Gast

Hallöle,

Folgendes kleines Problem. Mein Pythonscript muss sich 2 Integerwerte "merken" und beim nächsten Scriptaufruf wieder parat haben. Wegen 2 Integern eine Datei zu erstellen, erscheint mir nicht sher performant, deswegen will ich die irgendwie als "Umgebungsvariable" oder ähnliches abspeichern (Unter Linux). Was wäre der einfachste und beste Weg dafür? Danke schonmal für Eure Hilfe
joe

Anonymous hat geschrieben: Wegen 2 Integern eine Datei zu erstellen, erscheint mir nicht sher performant,
Wo siehst du denn da ein performance-problem? Rufst du das script denn sekündlich auf?
joe
Gast

Naja Sekündlich nicht aber im 10sec Takt. Und ich denke dass es halt eine andere Lösung als das in der Datei speichern geben MUSS *gg*
BlackJack

Ich würde die Datei empfehlen. Ist einfach, portabel und ob das wirklich zu "langsam" ist, solltest Du erstmal messen bevor Du kompliziertere Lösungen ins Auge fasst.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Eine Lösung mit Umgebungsvariable wäre doch auch nett... Aber ich meine mal aufgeschnappt zu haben, das gesetzte Variablen nach dem beenden des Skripts immer gelöscht werden... Ist das richtig?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Gucken und testen:

Code: Alles auswählen

import os
print os.environ
os.environ['Z'] = 'abc'
print os.environ['Z']
Also bei mir werden die Variablen nicht aufgehoben. Was du mahcen kannst wäre ein Server, der die Variablen cached und dann auf diese Werte per XML-RPC zugreifen, wenn du dir den Aufwand antun willst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Mal eine "dumme Frage": Wenn das Skript wirklich alle zehn Sekunden gestartet wird, wäre es da nicht besser ein ständig laufendes Skript zu haben, das einen best. Job alle zehn Sekunden erledigt - dann könnte ja alles im Speicher bleiben.
Wenn Du aber sagst: Geht nicht, weil ... dann denke doch nochmal über BlackJacks Kommentar nach. Ist da vielleicht was dran?

Ciao
Christian
Gast

Tja, ich bastel halt gerade an meinem Superkaramba-Theme rum http://mitglied.lycos.de/schedl666/snapshot4.jpg

Und ich hab halt momentan schon eine CPU-Auslastung von ca 15% bedingt durch den Trafficmonitor, Temperaturüberwachung, etc. Jetzt wenn ich auch noch 3 POP-Mailboxen abfrage und für jede Mailbox eine Datei schreibe, dann werde ich die 20% Hürde wohl überschreiten *gg*
Wobei mir einfällt, alle 2 Minuten die Mailbox überprüfen sollte eigentlich reichen, so wichtig bin ich auch wieder nicht, dass bei mir (ausser Spams *gg*) sekündlich Mails eintreffen.

Wobei ich um eine Datei eh nicht drumrumkomme, weil ich abspeichern will, wieviele Mails in der POP-Box liegen, und sobald eine Mail dazu gekommen ist soll eine akkustische Meldung ausgegeben werden. Dh hilft es mir wenig wenn ich bei einem Reboot erstmal das "You have Mail" Gequake höre
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ach, os.environ setzen scheint ab Python 2.4.1 rc1 wieder möglich zu sein.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Aber es funktioniert (grundsätzlich) trotzdem nicht so, wie der "Gast" das gerne hätte.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Aber es funktioniert (grundsätzlich) trotzdem nicht so, wie der "Gast" das gerne hätte.
Ich habe es nicht getestet, da ich keine Lust habe mir ein Python vor 2.4.1 final zu installieren und genausowenig Lust habe, den Patch anzuwenden.

Da hast du Recht BlackJach, das setzen von Systemvariablen zum speichern von Daten ist absolut keine gute Idee... wäre ja grauenhaft wenn dauernd irgendwelche Programme irgendwo in meinen Systemvariablen irgendein Zeug anspeichern würden.

Wie gesagt, es gibt viele andere Möglichkeiten sowas zu lösen, die allesamt eleganter sind.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
joe

Leonidas hat geschrieben:Ich habe es nicht getestet, da ich keine Lust habe mir ein Python vor 2.4.1 final zu installieren und genausowenig Lust habe, den Patch anzuwenden.
Das ist keine frage der Pythonversion. Grundsätzlich kann ein prozess nicht die umgebungsvariablen der übergeordneten prozesses beeinflussen (zumind. nicht bei den mir bekannten OSs). Und das wäre ja nötig, um die werte von einem scriptaufruf zum nächsten reichen zu wollen.
joe
Antworten