diff --git a/frigate/object_detection.py b/frigate/object_detection.py index 0a2a7059c..7026f9349 100644 --- a/frigate/object_detection.py +++ b/frigate/object_detection.py @@ -6,6 +6,7 @@ import queue import signal import threading from abc import ABC, abstractmethod +import time import numpy as np from setproctitle import setproctitle @@ -106,6 +107,7 @@ def run_detector( try: connection_id = detection_queue.get(timeout=1) except queue.Empty: + time.sleep(0.01) # short delay to reduce CPU usage when the queue is empty continue input_frame = frame_manager.get( connection_id, diff --git a/frigate/output.py b/frigate/output.py index 942bed12e..5a6dbb809 100644 --- a/frigate/output.py +++ b/frigate/output.py @@ -8,6 +8,7 @@ import queue import signal import subprocess as sp import threading +import time import traceback from wsgiref.simple_server import make_server @@ -598,6 +599,7 @@ def output_frames(config: FrigateConfig, video_output_queue): regions, ) = video_output_queue.get(True, 1) except queue.Empty: + time.sleep(0.01) # short delay to reduce CPU usage when the queue is empty continue frame_id = f"{camera}{frame_time}" diff --git a/frigate/video.py b/frigate/video.py index c02ad15c4..10c678001 100755 --- a/frigate/video.py +++ b/frigate/video.py @@ -750,6 +750,7 @@ def process_frames( try: frame_time = frame_queue.get(True, 1) except queue.Empty: + time.sleep(0.01) # short delay to reduce CPU usage when the queue is empty continue current_frame_time.value = frame_time