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?
reinitthe exact same variables. Why not just skip the delete altogether?