Programmübergreifende globale Variable?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo liebe Forenmitglieder!

    Ich habe folgendes Problem:

    Auf meinem Pi laufen 2 voneinander unabhängige Pythonscripts, bis jetzt!

    Ich würde gerne in einem Script eine Variable festlegen und diese dann im anderen einlesen.

    Ist das möglich?

    Ich weiß, google ist dein freund, doch diesmal habe ich nichts passendes gefunden.

    LG. AltBen

    Ich bin root! Ich darf das! :D


    Diese Signatur könnte jetzt sinnvoll sein ... ist sie aber nicht! :denker:

  • Ich hab' jetzt zwar keine Ahnung von Python - aber das dürfte ein allgemeingültiges Verhalten sein.

    Da jeder Prozess einen eigenen, ihm zugewiesenen Speicherbereich hat, geht das nicht so einfach.
    Z.B. besagt ja ein "memory fault" dass man sich ausserhalb der Grenzen seines Speicherbereichs bewegt.

    Hier ist das Stichwort IPC (InterProcess Communication).
    Zur Auswahl stehen da z.B.: "shared memory", "pipes", "signal" oder "TCP/IP".

    Was da jetzt wie in Python funktioniert entzieht sich allerdings leider meiner Kenntnis.

    cheers,
    -ds-

  • Ich habe dieses "Problem" mit >pickle< gelöst.
    pickle.dump schreibt eine Variable in eine Datei und pickle.load lädt sie logischerweise wieder.
    Lässt sich besser an einem Beispiel zeigen:

    Code
    import pickle
    test = "Hallo Welt"
    file = open("testdatei.pkl","wb")
    pickle.dump(test,file)
    file.close()
    Code
    import pickle
    file = open("testdatei.pkl","rb")
    test = pickle.load(file)
    print(test)

    Nachteil ist evtl. (je nach Anwendung), das man immer vorher speichern oder laden muss und die Variablen nicht "live" vom anderen Programmen gelesen werden. Aber dafür gibt es sicherlich noch andere Funktionen (die ich sicherlich auch noch lernen und gebrauchen werde...). Für meine Zwecke leistet pickle aber bisher optimale Arbeit. :)

    Kleine Anmerkung: Hatte Anfangs den Fehler gemacht, die ausgelesenen Variablen mit "is" zu vergleichen, was zu "false" Ausgaben geführt hat. Die Variablen sind also nicht "Die SELBEN" sondern nur "Die GLEICHEN". Also ein Vergleich funktioniert nur mit "=="

    Beste Grüße, Micha.

    /edit: Google ist schon lange nicht mehr mein Freund ;)

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?

    Einmal editiert, zuletzt von LieberScholli (18. Januar 2014 um 00:21)

    • Offizieller Beitrag

    Pickle,json, normale Textdatei ist ein weg, den ich aber immer unschön finde (für anfänger aber leicht verständlich). Ich selbst nutze gern den SimpleXMLServer

    Edit: Generell sollt man globale Variablen vermeiden wo es geht. Globale constanten, also immutable (schlimm, mir fällt das deutsche wort nicht mal mehr ein) variablen werden auch von den pythonics aktzeptiert, sind aber immer noch nicht wirklich schön ;).

    • Offizieller Beitrag

    gern Geschehen ;). Es gibt soviele tolle module die man durch Zufall findet... Globale variablen sind aber auch sehr verlockend...ich hab auch schon stunden damit verbracht rauszufinden warum plötzlich aus einer variable wo ich einen string erwarte, plötzlich der typ NONE wurde. :)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!