Globale Namen definieren ???
@jerch: Wie gesagt das kommt darauf an was das bedeutet und wer es wieder löscht und was zwischen Abgfragen und Setzen/Löschen auf den beiden Seiten passiert. Das Flag selber schützt ja nichts oder synchronisiert irgendwie vor gleichzeitigem verändern von gemeinsam benutzten Ressourcen. Zum Beispiel E-Mails auf einem Server, falls der Hauptthread das Flag als Anlass nimmt neue Mails zu verarbeiten. Wirklich sicher erscheint mir das nur wenn der Hauptthread das tatsächlich nur als Flag sieht das er nur liest, und bei dem es nichts ausmacht wenn er nicht alle Änderungen tatsächlich mitbekommt.
Hallo
Hier noch ein aktuelles Beispiel, wo ich nicht weiss, wie ich es anders lösen soll.
Der Startwert ist 150 und von diesem Wert wird nach jedem Buttonkick 1 abgezogen. Mit jedem Klick wird aber die Funktion neu aufgerufen. Wie kann ich hier auf global verzichten?
mfg
Hier noch ein aktuelles Beispiel, wo ich nicht weiss, wie ich es anders lösen soll.
Code: Alles auswählen
x = 150
@route('/home', method='GET')
def index():
global x
p = pipan.PiPan()
if request.GET.get("right"):
right = int(request.GET.get("right"))
x = x - right
print x
p.do_pan(x)
mfg
@lackschuh: Ich würde mal behaupten der Code ist fehlerhaft weil er davon ausgeht, dass jede Webanfrage vom selben Prozess beantwortet wird, was man so allgemein nicht garantieren kann.
Man würde hier den Wert immer mit durch die Anfrage schleifen, oder in ein Cookie packen, oder ein Session-Cookie verwenden und den Wert in einer Datebank speichern wo man ihn mit Hilfe des Session-Cookie dem Client zuordnen kann.
Es sei denn der Wert ist tatsächlich global für alle Anfragen gültig, egal von welchem Client, dann kann der einfach so in die Datenbank.
Man würde hier den Wert immer mit durch die Anfrage schleifen, oder in ein Cookie packen, oder ein Session-Cookie verwenden und den Wert in einer Datebank speichern wo man ihn mit Hilfe des Session-Cookie dem Client zuordnen kann.
Es sei denn der Wert ist tatsächlich global für alle Anfragen gültig, egal von welchem Client, dann kann der einfach so in die Datenbank.
@lackschuh: Würde ich nicht sagen. Bevor man selber etwas schreibt was die Daten persistent und sicher/konsistent bei nebenläufigem Zugriff speichert, kann man auch gleich eine Datenbank verwenden. Weniger potential etwas falsch zu machen und letztendlich wohl auch einfacher zu benutzen als sich so etwas selber zu schreiben. Man muss ja keine Oracle Enterprise Datenbank aufsetzen, SQLite3 tut's ja auch.
Andererseits könnte es Sinn machen die Servosteuerung in einen eigenen Server zu stecken um damit zu erzwingen dass das Gerät immer nur von einem Prozess aus angesteuert wird. Dann könnte sich dieser Prozess auch den aktuellen Zustand merken und ihn abfragbar machen.
Andererseits könnte es Sinn machen die Servosteuerung in einen eigenen Server zu stecken um damit zu erzwingen dass das Gerät immer nur von einem Prozess aus angesteuert wird. Dann könnte sich dieser Prozess auch den aktuellen Zustand merken und ihn abfragbar machen.