In der Dokumentation finde ich folgendes zu main:
Code: Alles auswählen
if __name__ == "__main__":
# execute only if run as a script
main()
Das heißt man definiert dann eine Funktion main dazu. Aber diese Funktion main ist doch dann global. Und da sie nicht lokal ist, wird sie auch von der Speicherverwaltung nicht beseitigt, wenn man danach Python nicht beendet. Das bedeutet also ein Memory Leak.
Sollte man es nicht besser dann so schreiben?
Code: Alles auswählen
if __name__ == "__main__":
def main():
print("Mein Main")
main()
Hier ist die Funktionsdefinition in der if Abfrage enthalten. Jetzt weiß ich aber nicht, ob das dann nach dem if wieder aufgelöst wird. Hab es getestet:
Code: Alles auswählen
if __name__ == "__main__":
def main():
print("Mein Main")
main()
main()
Das Resultat ist, dass die Funkton nach dem if auch noch da ist. Was kann ich machen, dass die Speicherverwaltung greift und die Funktion beseitigt?