Python ist einfach eine 0815-Hochsprache mit automatischer Speicherverwaltung. D.h. du musst dich prinzipiell um nichts kümmern. Sobald ein Objekt nicht mehr sichtbar ist, d.h nirgends mehr referenziert wird, wird es freigegeben.
ok, ich hab eingesehen ein singleton durch anderes ersetzbar ist, bin aber nicht sicher ob eine alternative dann gleich performt.
also, der ablauf ist wie folgt
read(file,x,y,z)
-> cache objekt nicht existent, wird angelegt
-> file mit parametern ist nicht in cache objekt -> wird gelesen, gefiltert, gecached, zurueckgegeben
-> read zu ende, KEINE referenz mehr auf cache objekt
was nun in meinen augen ohne singleton passiert:
cache wird freigegeben, inklusive aller files
2. read(file,x,y,z) (ohne singleton)
-> cache objekt nicht existent, wird angelegt
-> file mit parametern ist nicht in cache objekt -> wird gelesen, gefiltert, gecached, zurueckgegeben
-> read zu ende, keine referenz mehr auf cache objekt
bei wiederholung wird die file nochmals gelesen, gefiltert usw.
2. read(file,x,y,z) (mit singleton)
-> cache objekt existent noch, wird nicht erneut angelegt, alle files sind noch im speicher
-> file mit parametern ist im cache objekt -> wird nicht gelesen, sondern gleich zurueckgegeben
-> read zu ende, referenz bleibt auf cache objekt, deshalb auch alle anderen files
kann den teil 10000x wiederholen ohne die gleiche file mehrmals zu lesen und zu filtern
vorteil von dem code: ich muss das cache objekt nicht an der hand halten bis ich es wieder brauche.
es bleibt im speicher, kommt bei bedarf und verschwindet dann wieder, bleibt aber mit seinem aktuellem zustand.
welche patterns in python koennen das? ein borg?
merke, ich halte keine weiteren referenzen mehr auf den cache.
bitte meinungen.