Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
ich habe ein Programm programmiert, das ständig (immer wieder) durchläuft. Dabei werden Wörter einer Variable in eine Datei (im Moment noch txt Datei) geschrieben und im nächsten Programmdurchlauf mit der Variable von Wörtern verglichen. Das sieht etwa so aus:
a = True
while a == True:
l = ("Test")
zw = open("test.txt")
if zw.read() != l:
zw.close()
zw = open("test.txt", "w")
zw.write(l)
zw.close()
else:
zw.close()
l = l + "Test"
Allerdings scheint die Methode mit den Textdateien zu langsam zu sein und außerdem verbrauchen die Dateien unnötigen Speicherplatz. Gibt es noch eine andere Methode dieses Problem zu lösen?
yeet hat geschrieben: ↑Freitag 17. August 2018, 19:58ich habe ein Programm programmiert, das ständig (immer wieder) durchläuft. Dabei werden Wörter einer Variable in eine Datei (im Moment noch txt Datei) geschrieben und im nächsten Programmdurchlauf mit der Variable von Wörtern verglichen. Das sieht etwa so aus [...]
Du schreibst den Inhalt der Variable in eine Datei und lädst sie dann direkt wieder von dort? Warum hältst Du die Daten nicht im Speicher? Wenn ich richtig vermute, was du eigentlich machst, dann versuchst du zu prüfen, ob der Inhalt einer Variable sich geändert hat, falls ja, würde ich in so einem Fall die neue Variable in die Prüfvariable packen und dann dagegen prüfen, also wieder, bis sich der Inhalt der neuen Variable gegenüber der Prüfvariable geändert hat. Ist verständlich, was ich meine?
@yeet: Der Vergleich von `a` mit `True` mach wenig Sinn, denn da kommt ja wieder nur `True` oder `False` heraus, also das was `a` ja bereits ist. Also ``while a:``. Da sich `a` aber nie ändert, kann man es auch weglassen und gleich ``while True:`` schreiben.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
pixewakb hat geschrieben: ↑Freitag 17. August 2018, 20:16
yeet hat geschrieben: ↑Freitag 17. August 2018, 19:58ich habe ein Programm programmiert, das ständig (immer wieder) durchläuft. Dabei werden Wörter einer Variable in eine Datei (im Moment noch txt Datei) geschrieben und im nächsten Programmdurchlauf mit der Variable von Wörtern verglichen. Das sieht etwa so aus [...]
Du schreibst den Inhalt der Variable in eine Datei und lädst sie dann direkt wieder von dort? Warum hältst Du die Daten nicht im Speicher? Wenn ich richtig vermute, was du eigentlich machst, dann versuchst du zu prüfen, ob der Inhalt einer Variable sich geändert hat, falls ja, würde ich in so einem Fall die neue Variable in die Prüfvariable packen und dann dagegen prüfen, also wieder, bis sich der Inhalt der neuen Variable gegenüber der Prüfvariable geändert hat. Ist verständlich, was ich meine?
data = "Test"
with open("test.txt", "w") as f:
f.write(data)
@pixewabk Ja, ich verstehe genau was du meinst. Aber das was ich dann in der Variable drin stehen habe, soll in jedem weiteren Durchlauf auch noch beestehen und ich muss die Variable ja am Anfang definieren und dann wird sie ja wieder überschrieben:
while True:
l = ("Test")
a = (" ")
if a != l:
print("TEST")
a = l
else:
print("Bestanden")
Mein Ziel ist es ja, dass das Programm einmal "TEST" ausgibt und danach immer "Bestanden", also dass ein Stand immer gespeichert wird und im nächsten Programmdurchlauf auch noch gleich ist, wenn du verstehst was ich meine.
@yeet: Beschreib doch mal welches Problem Du eigentlich lösen möchtest. Also nicht welche Lösung Du jetzt verwendest, sondern was warum gemacht werden soll.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Allerdings scheint die Methode mit den Textdateien zu langsam zu sein
I/O auf der Festplatte ist immer langsam, egal wie. Abhilfe a) schneller Festplatte , b) asyncronen I/O verwenden, damit dein Hauptprogramm nicht durch I/O blockiert wird, c) das Problem anders lösen, wie oben bereits mehrfach erwähnt. c) ist hier denke aktuell denke ich die sinnvollste Lösung.
@noisefloor: schnell ist relativ. Das ständige Schreiben und Lesen findet ja komplett im Cache statt. Daher dürften a) und b) nicht wirklich viel Zeit einsparen. Ich bin auch für c).