From a4b057c055bbb5a703d6ce580fdc197e21ae56d7 Mon Sep 17 00:00:00 2001 From: JoinTyang <41655440+JoinTyang@users.noreply.github.com> Date: Fri, 14 Feb 2025 14:18:21 +0800 Subject: [PATCH] fix multi thread face cluster bug (#476) --- repo_metadata/index_worker.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/repo_metadata/index_worker.py b/repo_metadata/index_worker.py index a2bd2552..8ac235d1 100644 --- a/repo_metadata/index_worker.py +++ b/repo_metadata/index_worker.py @@ -46,6 +46,7 @@ def __init__(self, config): self.mq = get_mq(self.mq_server, self.mq_port, self.mq_password) self.face_recognition_manager = FaceRecognitionManager(config) self.set_signal() + self.worker_list = [] def _parse_config(self, config): redis_section_name = 'REDIS' @@ -75,10 +76,21 @@ def _get_face_cluster_lock_key(self, repo_id): def tname(self): return threading.current_thread().name + def clear_worker(self): + for th in self.worker_list: + th.join() + logger.info("All worker threads has stopped.") + def start(self): for i in range(int(self.worker_num)): - threading.Thread(target=self.face_cluster_handler, name='face_cluster_' + str(i), daemon=True).start() - threading.Thread(target=self.refresh_lock, name='refresh_thread', daemon=True).start() + t = threading.Thread(target=self.face_cluster_handler, name='face_cluster_' + str(i), daemon=True) + t.start() + self.worker_list.append(t) + + t = threading.Thread(target=self.refresh_lock, name='refresh_thread', daemon=True) + t.start() + self.worker_list.append(t) + self.clear_worker() def face_cluster_handler(self): face_recognition_logger.info('%s starting face cluster' % self.tname)