Seite 1 von 1

Ergebnis in Variable ablegen

Verfasst: Freitag 6. August 2021, 15:31
von PeterL
Hallo Leute,

ich habe ein Problem.
_
Ich lasse ein Schleife 10 Mal durchlaufen, es wird eine Berechnung angestellt, und das
Ergebnis wird mit Print ausgegeben. Also insgesamt z.b 10 Mal.
Bei höheren Werten z.b 1.000.000 dauert das ausgeben in ein Consolefenster extrem Lange. Ich möchte die Berechnung in der Schleife die Text und Variablen enthält in eine
ganz normale String Variable speichern, und dann auf der Console ausgeben, wenn die Berechnung beendet wurde.

Hat jemand eine Lösung für mich...

Re: Ergebnis in Variable ablegen

Verfasst: Freitag 6. August 2021, 15:38
von __deets__
Warum sollte das ausgeben dann weniger lang dauern? Das dauert genauso lang.

Wenn du das beschleunigen willst, dann speicher die Ausgaben in eine Datei (zb durch die Verwendung des Moduls logging, und dem mitzuteilen, eine Log-Datei zu schreiben), und oeffne die danach mit einem Editor.

Ansonsten geht es natuerlich einfach mit

Code: Alles auswählen

ausgaben = []
for i in range(10000000):
    ausgaben.append(str(i))
print("\n".join(ausgaben))
Aber wie gesagt: das geht kein Stueck schneller von statten.

Re: Ergebnis in Variable ablegen

Verfasst: Freitag 6. August 2021, 17:43
von PeterL
Hallo , danke für deine Hilfe,

ich benutze die Lernumgebung TiegerJython, die Ausgabe auf der Console dauert dort sehr lange, und die Ausgabe in eine Textdatei dauert auch sehr lange.
Die Ausgabe in eine Variable zur Laufzeit bricht mit einer Fehlermaldung ab. Ich hätte Zuwenig RAM. Ich habe das Problem so gelöst: Ich speichere zur Laufzeit jede Berechnung einzeln in eine Textdatei:

file1 = open("myfile.txt", "a") # append mode
file1.write(str(ausgaben))
file1.write("\n")
file1.close()

Was komischerweise auch sehr lange dauert. Ich glaube es liegt an der Lernumgebung.
Es macht trotz der Schwierigkeiten auch als Anfänger mit der Lernumgebung viel Spaß.

Danke...

Re: Ergebnis in Variable ablegen

Verfasst: Samstag 7. August 2021, 09:29
von Sirius3
Es ist auch extrem ungeschickt für jede einzelne Zeile die Datei erneut zu öffnen. Öffne die Datei einmal am Anfang.

Re: Ergebnis in Variable ablegen

Verfasst: Samstag 7. August 2021, 10:29
von __blackjack__
@PeterL: Am besten mit der ``with``-Anweisung. Und ohne die komische 1 im Namen `file1`. Entweder ist die überflüssig, oder Du hast Namen die sich nur durch angehängte Nummern unterscheiden, was keine guten Namen sind, weil solche Nummern dem Leser nicht wirklich etwas verraten und man die Namen leicht verwechseln kann.

Statt zwei Schreiboperationen pro Ergebnis zu haben, ist es sehr wahrscheinlich effizienter die komplette Zeile im Arbeitsspeicher zu erstellen und mit einer Schreiboperation in die Datei zu schreiben.

Code: Alles auswählen

    ...
    with open("myfile.txt", "a", encoding="utf-8") as file:
        ...
        for i in range(1_000_000):
            ...
            file.write(f"{ausgaben}\n")