Hallo,
ich stehe vor einem ziemlich großen Problem.
Ich möchte Startnummern (Wartenummern) ausgeben an zwei unterschiedlichen Plätzen.
Dazu benutze ich 3 PI´s
Der erste ist der Master auf dem ich eine Text Datei freigebe in dem die zuletzt vergebene Startnummer steht.
Die anderen zwei geben die Tickets aus.
Das heißt beim drücken einer Taste schaut er am Master Pi nach welche Startnummer er drucken muss und erhöht diese um 1 und speichert sie wieder ab.
Jetzt kann es passieren das beide Pi´s zur exakt selben zeit in die Textdatei schauen welche Startnummer drin liegt.
Also das Problem es wird zweimal dieselbe Nummer ausgedruckt.
Gibt es eine Möglichkeit das die Textdatei gesperrt wird während einer der beiden Pi´s die Nummer ausliest.
Also wenn der erste gerade liest und die neue Nummer schreibt, dass der eine warten muss?
Beispiel
open file "nummer.txt" and BLOCK
Der Codeteil welcher die Nummer ausliest und um eins erhöht
theFile = open("/home/nfs/public/zahl.txt", "r") # Letzte Vergebene Startnummer wird ausgelesen am Master Netzwerklaufwerk welches auf dem Master liegt
theInts = []
for val1 in theFile.read().split():
theInts.append(int(val1))
theFile.close()
akt = int(val1)
neu = akt + 1 # Startnummer wird um 1 erhöht
with open ('/home/nfs/public/zahl.txt', 'w') as z:
z.write('%d' % neu) #Die um 1 erhoehte Startnummer wird wieder gespeichert
Alles anzeigen
Bitte Bitte kann mir jemand weiterhelfen.
Das ist jetzt seit zwei Tagen in Betrieb und es funktioniert nicht richtig
DANKE