Seite 1 von 1

Systemumgebungsvariablen setzten und auslesen?

Verfasst: Mittwoch 16. März 2005, 21:11
von 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

Re: Systemumgebungsvariablen setzten und auslesen?

Verfasst: Mittwoch 16. März 2005, 21:15
von 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

Verfasst: Mittwoch 16. März 2005, 21:29
von 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*

Verfasst: Mittwoch 16. März 2005, 22:56
von 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.

Verfasst: Donnerstag 17. März 2005, 06:44
von jens
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?

Verfasst: Donnerstag 17. März 2005, 13:39
von Leonidas
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.

Verfasst: Donnerstag 17. März 2005, 14:38
von CM
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

Verfasst: Freitag 18. März 2005, 22:55
von 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

Verfasst: Sonntag 20. März 2005, 23:16
von Leonidas
Ach, os.environ setzen scheint ab Python 2.4.1 rc1 wieder möglich zu sein.

Verfasst: Sonntag 20. März 2005, 23:44
von BlackJack
Aber es funktioniert (grundsätzlich) trotzdem nicht so, wie der "Gast" das gerne hätte.

Verfasst: Montag 21. März 2005, 01:41
von Leonidas
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.

Verfasst: Montag 21. März 2005, 08:50
von 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