Ergebnis in Variable ablegen

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.
Antworten
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

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...
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

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...
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Es ist auch extrem ungeschickt für jede einzelne Zeile die Datei erneut zu öffnen. Öffne die Datei einmal am Anfang.
Benutzeravatar
__blackjack__
User
Beiträge: 14056
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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")
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten