Speicherverwaltung bei Programmausführung

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

Hui. Da ist ja ne Menge Cargo-Cult-Programmierung dabei. Dieses “leeren” von Variablen zb ist so wirksam wie ein Globuli bei Vollmond.

Welches ist denn das problematische Textfeld? codetextfeld? Und wer ruft write_loadfromusb auf?
jake-the-snake

Hi
Dieses “leeren” von Variablen zb ist so wirksam wie ein Globuli bei Vollmond
:lol: :lol: :lol: :lol:

Hier nützt das wahrscheinlich wenig... Ich habe einfach unter jeden Programmblock diesen Resetklotz gesetzt, um sicher zu gehen, dass sich nicht doch noch irgendwo her Überraschungen auftun (Fehler bei Variable-Belegung)

Aufgerufen wird dies von diesem Block:

Code: Alles auswählen

# Einleitung der App-Knoepfe
class App:
  
    def __init__(self, master):
        frame = Frame(master)
        frame.place(width=120, height=320, x=340, y=170)
        
        # End-Button
        self.poweroff = Button(frame,
                         text="►   Beenden   ◄", fg="black", pady=5, padx=5,
                         command=self.write_poweroff)
        self.poweroff.pack()

        # Code-Button
        self.coding = Button(frame, 
                         text="Verschlüsseln ►", fg="red", pady=5, padx=5,
                         command=self.write_coding)
        self.coding.pack()

        # Decode-Button    
        self.decoding = Button(frame,
                         text="◄ Entschlüsseln", fg="green", pady=5, padx=5,
                         command=self.write_decoding)
        self.decoding.pack()

        # Export-Button
        self.savetousb = Button(frame,
                         text="USB  - Export ▼", fg="black", pady=5, padx=5,
                         command=self.write_savetousb)
        self.savetousb.pack()

        # Import-Button
        self.loadfromusb = Button(frame,
                         text="USB  - Import ▲", fg="black", pady=5, padx=5,
                         command=self.write_loadfromusb)
        self.loadfromusb.pack()
Sieht doch soweit i. O. aus... :wink:

Gruss jts

PS. Das Problem-Textfeld ist "codetextfeld" - da es an Überfettung leidet... :)
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@jake-the-snake: Speicher wird automatisch freigegeben, wenn er nicht mehr gebraucht wird, z.B. weil die lokalen Variablen am Ende einer Funktion abgeräumt werden. `usbfh` wird nicht verwendet. Man sollte kein `place` benutzen. Das eigentliche Problem dürfte sein, dass Du ständig Label und Images übereinander malst. Das alles muß bei jeder Cursorbewegung alles neu gezeichnet werden.
OldBoy
User
Beiträge: 41
Registriert: Samstag 12. Januar 2008, 20:39

Dein Text besteht offensichtlich aus einer einzelnen langen Zeile. Mit einer einzelnen 64KB langen Zeile ist mein Programm auch langsam.
Mit einer normale Textdatei mit 60 MB (ca 650.000 Zeilen) geht das Scrollen flüssig.

Gruss, Oldboy
jake-the-snake

Abend zusammen

Ich wollte nur kurz Feedback geben:

Für Testzwecke habe ich mir den Fensterinhalt in vielen "Einzelzeilen" (\n) anzeigen lassen und nicht in einer einzigen "Zeile". Programmbedienung und Scrolling jetzt ohne Probleme oder sonstige Auffälligkeiten möglich. :D

Ich denke, dass bei einer langen Zeile, die der Windowmanager "tk" bei der Anzeige ja mehrfach am Textfeldende umbrechen muss, jede Menge zu tun hat. Wird dann so eine "Mammutzeile" auch noch gescrollt, kommt es wohl rechnerrisch an seine Grenzen.

OldBoy hat somit den Nagel auf den Kopf getroffen und erhält 100 Punkte :wink:

Sirius3 hat auch recht, aber die paar übereinander "gemalten" Bildchen fallen hier nicht so ins Gewicht. :wink:

Danke für Eure Aussagen, ohne die ich gar nicht auf die Idee gekommen wäre, das Problem bei den Zeilen zu suchen...

Gruss jts
Antworten