0

I am gonna use my codes for image processing and I created OOP programming codes. If self.set_variables.has_changed() trigger, I want to destroy all created objects such as self.set_variables, self.log_cl, self.model_cl, and self.stream_cl.

from set_variables import SetVariables
from model_loader import ModelLoader
from open_stream import VideoStreamHandler
from log_record import LogRecording
import sys
import gc
from pympler import asizeof

class ObjectDetector:
    liste = []
    def __init__(self):
        self.reinit()
        self.start_detection()
    
    def reinit(self):
        gc.collect()
        self.set_variables: SetVariables = SetVariables()
        self.log_cl: LogRecording = LogRecording(self.set_variables)
        self.log_cl.logger_info("INIT STARTED")
        self.model_cl: ModelLoader = ModelLoader(self.set_variables, self.log_cl)
        self.stream_cl: VideoStreamHandler = VideoStreamHandler(self.set_variables, self.log_cl)

    def start_detection(self):
        while True:
            try:

                if self.set_variables.has_changed():
                    self.reinit()`your text`

I tried del keyword but when I checked the size of objects, it increased every time self.set_variables.has_changed() was triggered. Is this normal?


                if self.set_variables.has_changed():
                    del self.set_variables
                    del self.log_cl
                    del self.model_cl
                    del self.stream_cl
                    self.reinit()
                    print("1-self.set_variables",asizeof.asizeof(self.set_variables))
                    print("1-self.log_cl",asizeof.asizeof(self.log_cl))
                    print("1-self.model_cl",asizeof.asizeof(self.model_cl))
                    print("1-self.stream_cl",asizeof.asizeof(self.stream_cl))

The result is;

`1-self.set_variables 1552
1-self.log_cl 6952
1-self.model_cl 1008440
1-self.stream_cl 6228352
[INFO][11/12/2024--14:54]: INIT STARTED
[INFO][11/12/2024--14:54]: [load_model] [MODEL LOADED SUCCESFULLY]
[INFO][11/12/2024--14:54]: [open_source] [CAM OPENED SUCCESFULLY]
1-self.set_variables 1552
1-self.log_cl 7928
1-self.model_cl 1009416
1-self.stream_cl 6229328
[INFO][11/12/2024--14:54]: INIT STARTED
[INFO][11/12/2024--14:54]: [load_model] [MODEL LOADED SUCCESFULLY]
[INFO][11/12/2024--14:54]: [open_source] [CAM OPENED SUCCESFULLY]
1-self.set_variables 1552
1-self.log_cl 8936       
1-self.model_cl 1010424 
1-self.stream_cl 6230336`

So I think that the past object can not be deleted.

How can I fix it? How can I close objects?

2
  • Right after delete you reinit the exact same variables. Why not just skip the delete altogether? Commented Dec 11, 2024 at 13:03
  • Please provide an minimal reproducible example. Your example is neither minimal nor reproducible. Commented Dec 11, 2024 at 13:06

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.