Wiele obiektów w pętli

0

Cześć,
Mam jeden obiekt który wykonuje nieskończoną pętle. W obiekcie tym potrzebuję inne obiekty które za każdym razem muszą być "czyste". Czy lepiej resetować je przez czyszczenie pól, czy lepiej obiekt zniszczyć i stworzyć nowy? Czy jest może jeszcze inny sposób w pythonie o którym nie wiem?
Pozdrawiam
NickOver

0

Czy lepiej resetować je przez czyszczenie pól, czy lepiej obiekt zniszczyć i stworzyć nowy?

To zależy. Nie ma jednej prawidłowej odpowiedzi.

Co robisz, jakiego rodzaju aplikację, co to za obiekty?

0

Aplikacja działa mniej więcej w ten sposób:
pobiera dane -> parsuje je -> na ich odstawie wykonuje obliczenia -> zwraca dane->idzie spać na czas zależny od zwróconych danych średnio na ok 40min ale ten czas może bardzo się zmieniać.
Obiekty to klasy napisane przeze mnie korzystające z paru wbudowanych bibliotek. Mn:
-klasa od operacji na serwerze
-parser
-logger
-klasa logiki - to ona odpala wszystko inne.
Za każdym razem potrzebuję "czystych" obiektów, tj. takich których w których nie zostały żadne dane, z jednym wyjątkiem (aby nie wczytywać za każdym razem pliku), ale to mogę podać w konstruktorze i sprawa załatwiona.

1

No właśnie, wszystko zależy od potrzeb projektu. Np. używanie tych samych obiektów ciągle ma tę zaletę, że nie trzeba tracić czasu procesora na kasowanie obiektów i tworzenie nowych. A np. jeśli byś robił grę, która powinna wyświetlać zaawansowaną grafikę 60 klatek na sekundę, to każda milisekunda byłaby na wagę złota.

idzie spać na czas zależny od zwróconych danych średnio na ok 40min ale ten czas może bardzo się zmieniać.

Jednak w tym przypadku, jeśli robisz coś kompletnie innego, co się włącza raz na 40 minut, to czas na kasowanie/tworzenie obiektów/pracę garbage collectora można pominąć...

Za każdym razem potrzebuję "czystych" obiektów, tj. takich których w których nie zostały żadne dane, z jednym wyjątkiem (aby nie wczytywać za każdym razem pliku), ale to mogę podać w konstruktorze i sprawa załatwiona.

Pytanie - co będzie prostsze w twoim przypadku? Czy czyszczenie obiektu czy tworzenie go od nowa? Czy czyszczenie obiektu to po prostu nadpisanie paru pól czy może jakieś zaawansowane operacje będziesz tam robił w celu wyczyszczenia? (jeśli to ostatnie, to być może prościej było utworzyć od nowa obiekt).

Tworzenie obiektów od nowa a traktowanie starych jako niezmiennych (immutable) może mieć też pewne zalety. Np. możesz trzymać w pamięci cały czas kopie poprzedniego stanu aplikacji (np. do celów diagnostycznych, żeby odtworzyć stan np. sprzed dwóch godzin i porównać ze stanem obecnym... Reużywając te same obiekty nie mógłbyś tak zrobić, bo byś miał dostęp tylko do aktualnego stanu.

Poza tym traktowanie raz utworzonych obiektów jako niezmiennych i tworzenie nowych pewnie będzie mniej bugo-genne niż używanie tych samych obiektów (np. co jak nie wyczyścisz dobrze obiektu i nowe dane będą się przeplatać ze starymi? tworząc od nowa nie miałbyś takich problemów). Co nie znaczy, że zawsze tworzenie na nowo jest dobrym rozwiązaniem. Oba podejścia mają zalety i wady, zależy od tego co się chce osiągnąć, i jak wygląda program.

0

Dzięki @LukeJL za merytoryczną odpowiedź. Raczej nie będę potrzebował odtwarzać poprzedniego stanu, jeśli już to jakieś pojedyncze wartości pól, co mogę wrzucić w loggera, albo logować wszystko co idzie to klasy display. Stwierdziłem że lepiej będzie usuwać obiekty gdyż w sumie przez ten czas kiedy główna pętla śpi i tak ich nie używam będą tylko zalegały w ramie (parę mb danych, ale zawsze). Jeszcze raz dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1