mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-12 22:25:24 +03:00
Ensure files are closed
This commit is contained in:
parent
42be7efde4
commit
f24ba6bfc1
@ -127,6 +127,7 @@ def output_frames(
|
||||
preview_recorders[camera].write_data(
|
||||
current_tracked_objects, motion_boxes, frame_time, frame
|
||||
)
|
||||
frame_manager.close(frame_id)
|
||||
|
||||
move_preview_frames("clips")
|
||||
|
||||
|
||||
@ -687,14 +687,14 @@ class DictFrameManager(FrameManager):
|
||||
|
||||
class SharedMemoryFrameManager(FrameManager):
|
||||
def __init__(self):
|
||||
self.shm_store = {}
|
||||
self.shm_store: dict[str, shared_memory.SharedMemory] = {}
|
||||
|
||||
def create(self, name, size) -> AnyStr:
|
||||
def create(self, name: str, size) -> AnyStr:
|
||||
shm = shared_memory.SharedMemory(name=name, create=True, size=size)
|
||||
self.shm_store[name] = shm
|
||||
return shm.buf
|
||||
|
||||
def get(self, name, shape):
|
||||
def get(self, name: str, shape):
|
||||
if name in self.shm_store:
|
||||
shm = self.shm_store[name]
|
||||
else:
|
||||
@ -702,18 +702,16 @@ class SharedMemoryFrameManager(FrameManager):
|
||||
self.shm_store[name] = shm
|
||||
return np.ndarray(shape, dtype=np.uint8, buffer=shm.buf)
|
||||
|
||||
def close(self, name):
|
||||
def close(self, name: str):
|
||||
if name in self.shm_store:
|
||||
self.shm_store[name].close()
|
||||
del self.shm_store[name]
|
||||
|
||||
def delete(self, name):
|
||||
def delete(self, name: str):
|
||||
if name in self.shm_store:
|
||||
self.shm_store[name].close()
|
||||
self.shm_store[name].unlink()
|
||||
del self.shm_store[name]
|
||||
else:
|
||||
logger.error(f"Could not delete {name} the store is {self.shm_store}")
|
||||
|
||||
|
||||
def create_mask(frame_shape, mask):
|
||||
|
||||
@ -109,7 +109,7 @@ def capture_frames(
|
||||
skipped_eps = EventsPerSecond()
|
||||
skipped_eps.start()
|
||||
|
||||
shm_count = max(10, config.detect.fps * 2)
|
||||
shm_count = 5
|
||||
shm_frames: list[str] = []
|
||||
|
||||
while True:
|
||||
@ -128,6 +128,8 @@ def capture_frames(
|
||||
expired_frame_name = shm_frames.pop(0)
|
||||
frame_manager.delete(expired_frame_name)
|
||||
except Exception:
|
||||
frame_manager.delete(frame_name)
|
||||
|
||||
# shutdown has been initiated
|
||||
if stop_event.is_set():
|
||||
break
|
||||
@ -150,7 +152,6 @@ def capture_frames(
|
||||
except queue.Full:
|
||||
# if the queue is full, skip this frame
|
||||
skipped_eps.update()
|
||||
frame_manager.delete(frame_name)
|
||||
|
||||
|
||||
class CameraWatchdog(threading.Thread):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user