Seite 1 von 1

Nochmal externe Variablen, diesmal mit QProcess

Verfasst: Mittwoch 8. Dezember 2004, 16:51
von max2
Hallo,

wenn ich globale Variablen auch in Unterfenstern bearbeiten möchte, funktioniert der Import eines Moduls, welches die Variable initialisiert, ohne Probleme: alle können den Wert der Variable modifizieren (
http://python.sandtner.org/viewtopic.ph ... 067f8b5ee3
).
Aber: Wenn ich mit QProcess ein neues Script (ohne Klassen, nur Funktionen) starte und das besagte Modul importiere, bekomme ich den Initialisierungswert der Variable und nicht - wie ich es natürlich möchte - den mittlerweile modifizierten Wert. Wie macht man das? Klar, man könnte den Wert in eine Datei schreiben und diese als Argument beim Start des Scripts übergeben, aber es muss doch auch einfacher gehen. Danke im voraus.
max

EDIT mawe: hab mal den Link zum Link gemacht

Verfasst: Mittwoch 8. Dezember 2004, 17:47
von Leonidas
Musst du nicht auf das global einmal importierte Modul zugreifen und nicht auf eine neue Instanz des Moduls? Du kannst nämlich in jedem Namespace das Modul importieren, dadurch bekommst du eben die initialen Werte.

Verfasst: Mittwoch 8. Dezember 2004, 19:17
von Dookie
Hi,

nö musst du nicht, Module werden pro Interpreterinstanz nur beim ersten import initialisiert, bei jedem weiteren Import, in der selben Interpreterinstanz, wird nur ein Zeiger auf das bereits initialisierte Modul zurückgegeben.

Ich kenne QProcess nicht, aber es scheint für jeden Prozess eine neue Interpreterinstanz zu bilden. Daher wird jedesmal ein neues Modulobjekt erzeugt und initialisiert. Ich denke, du wirst um eine Datei in die du die Werte schreibst und aus der du sie bei Bedarf wieder einliest nicht rumkommen.

Such mal bei den Codesnippets nach file_to_dict.


Gruß

Dookie

Verfasst: Mittwoch 8. Dezember 2004, 19:42
von Leonidas
Dookie hat geschrieben:nö musst du nicht, Module werden pro Interpreterinstanz nur beim ersten import initialisiert, bei jedem weiteren Import, in der selben Interpreterinstanz, wird nur ein Zeiger auf das bereits initialisierte Modul zurückgegeben.
Ach so! Das spart Resourcen, aber logisch finde ich das nicht.

Schade

Verfasst: Mittwoch 8. Dezember 2004, 23:25
von max2
Das mit der neuen Interpreterinstanz scheint Sinn zu machen, immerhin startet QProcess alles mögliche solange man es als "arg0" + "arg1" + ... formulieren kann. In meinem Fall ist es eben "python" + "-u" + "<scriptname>" + "<arg>" um eine ungepufferte Ausgabe in ein QTextEdit zu kriegen.
Danke an Euch beide für die Tipps, cooles Board.
Grüße
max

@mawe: keine Sorge, ich lerne es noch